史上最强劲之android模拟器命令详解
转http://www.eoeandroid.com/thread-23281-1-1.htmlAndroid模拟器ndroidSDK自带一个移动设备模拟器-它是一个可以运行在你电脑上的虚拟设备.Android模拟器可以让你不需使用物理设备即可预览、开发和测试Android应用程序.
Android模拟器能够模拟除了接听和拨打电话外的所有移动设备上的典型功能和行为.如右图所示,Android模拟器提供了大量的导航和控制键,你可以通过鼠标或键盘点击这些按键来为你的应用程序产生事件.同时它还有一个屏幕用于显示Android自带应用程序和你自己的应用程序.
为了便于模拟和测试应用程序,Android模拟器允许你你的应用程序通过Android平台服务调用其他程序、访问网络、播放音频和视频、保存和**数据、通知用户、渲染图像过渡和场景.
Android模拟器同样具有强大的调试能力,例如能够记录内核输出的控制台、模拟程序中断(比如接受短信或打入电话)、模拟数据通道中的延时效果和遗失。
下面的章节将提供关于模拟器的详细信息,以及如何在开发应用程序中使用模拟器。
启动和关闭模拟器
要启动Android模拟器,首先进入SDK的tools/文件夹,然后输入emulator或./emulator。这个操作将初始化Android系统,你将会在屏幕上看到模拟器窗口。
要关闭模拟器,只需要关闭模拟器窗口即可。
操作模拟器
你可以通过模拟器的启动选项和控制台命令来控制模拟环境的行为和特性。一旦模拟器启动,你就可以通过键盘和鼠标来"按"模拟器的按键,从而操作模拟器。
下面的表格总结了模拟器按键可键盘按键之间的映射关系。模拟器按键键盘按键
后退ESC
菜单F1或PgUp
开始F2或PgDn呼叫F3挂断F4
-F5,F6未分配
电源按键F7
禁用/启用所有网络F8
开始跟踪F9(当且仅当有-trace标记时有效)
停止跟踪F10(当且仅当有-trace标记时有效)
主页HOME
方向键左/上/右/下小键盘4/8/6/2
方向键中心建小键盘5
调低音量小键盘负号(-)
调高音量小键盘加号(+)
模拟器启动选项
Android模拟器提供了很多启动选项,你可以在启动模拟器时指定,来控制其外观和行为。下面是用命令行的方式启动模拟器并指定参数的语法:emulator[-option[value]]...[-qemuargs]
下表总结了所有有效的选项。
类型选项描述注释
帮助-help以列表的形式打印模拟器的所有命令
数据-data[file]使用当作用户数据的磁盘镜像如果没有-data,模拟器会在~/.android(Linux/Mac)或C:\DocumentsandSettings\\LocalSettings\Android(Windows)中查找文件名为"userdata.img"的文件。
如果使用了-data但不存在,模拟器会在那个位置创建一个文件
-ramdisk使用作为RAM镜像默认值为/ramdisk.img
-sdcard使用作为SD卡镜像默认值为/sdcard.img
-wipe-data启动前清除用户磁盘镜像中的所有数据(参考-data)
调试-console允许当前中断使用控制台Shell
-debug-kernel将内核输出发送到控制台
-logcat允许根据给定的标签为输出分类如果定义了环境变量ANDROID_LOG_TAGS并且不为空,
它的值将被作为logcat的默认值。
-trace允许代码剖析(按F9键开始)
-verbose允许详细信息输出
-verbosekeys允许详细输出按键信息
媒体-mic使用设备或者WAV文件作为音频输出
-noaudio禁用Android的音频支持默认禁用
-radio将无线调制解调器接口重定向到主机特征设备
-useaudio启用Android音频支持默认不启用
网络-netdelay设置网络延迟模拟的延迟时间为.默认值是none。请参考网络延迟模拟中表"支持的值"
-netfast-netspeedfull-netdelaynone的快捷方式
-netspeed设置网速模拟的加速值为.默认值为full。请参考网速模拟中表"支持的值"
系统-image使用作为系统镜像默认值为/system.img
-kernel使用作为模拟器内核
-nojni
-qemu传递qemu参数
-qemu-h显示qemu帮助信息
-system在目录下查找系统、RAM和用户数据镜像
UI-flashkeys在设备皮肤上闪烁按下的键
-noskin不使用任何模拟器皮肤
-onion在屏幕上使用覆盖图不支持JPEG格式图片,仅支持PNG格式图片
-onion-alpha指定onion皮肤的半透明值(单位%).默认值为50
-skin用指定皮肤启动模拟器SDK提供了4个可选皮肤:
QVGA-L(320×240,风景)(默认)QVGA-P(240×320,肖像)HVGA-L(480×320,风景)HVGA-P(320×480,肖像)
-skindir在目录下查找皮肤
使用模拟器控制台
每一个运行中的模拟器实例都包括一个控制台,你可以利用控制台动态的查询和控制模拟设备的环境。例如,你可以利用控制台动态的管理端口映射和网络特性,还可以模拟电话时间。要想进入控制台输入命令,你需要使用telnet连接到控制台的端口号。
你可以使用下面的命令随时随地连接到任何一个运行中的模拟器实例:telnetlocalhost
假设第一个模拟器实例的控制台使用5554端口,下一个实例使用的端口号会加2,比如5556、5558……等。你可以在启动模拟器是使用-verbose选项来检测该模拟器实例使用的端口号,在调试输出的找到以"emulatorconsolerunningonportnumber"这一行。另外,你可以在命令行中使用adbdevices来查看模拟器实例和他们的端口列表。最多可以有16个模拟器实例同时运行控制台。
注意:模拟器**端口5554-5587的来自任何电脑的连接。将来发布的版本将只接受本机的连接,但目前,你需要用防火墙阻断外部对你开发设备的5554-5587这些端口的连接。
一旦连接上控制台,你可以输入help[command]来查看命令列表和指定命令的教程。
要离开控制台会话,使用quit或exit命令。
下面的章节将介绍控制台的主要功能区域。
端口重定向
你可以在模拟器运行期间添加和删除端口重定向。连接上控制台后,你可以通过下面的方法管理端口重定向:redirredir
支持下表列出的子命令:
子命令描述注释
list列出当前的端口重定向(min150,max550)
add::添加新的端口重定向必须是"tcp"或"udp"是主机上开启的端口号是向模拟器/设备发送数据的端口号
del:删除端口重定向and的含义同上
网络状况
你可以利用控制台检测网络状况和当前延迟、加速特性。要想检测网络状态需要连接到控制台,使用netstatus命令。下面是命令和输出的例子。networkstatus
网络延迟模拟
模拟器允许你模拟多种网络延迟等级,因此你可以在更接近真实情况的环境下测试你的应用程序。你可以在模拟器启动时设置延迟等级或范围,也可以在模拟器运行期间通过控制台动态修改延迟。
要想在模拟启动时设置延迟,使用-netdelay选项,后面跟一个合法的值。这里给出一些例子:emulator-netdelaygprs
emulator-netdelay40100
要想在模拟器运行期间动态修改网络延迟,需要连接上控制台使用netdelay命令,后面跟合法的值。下表中列出了合法的值networkdelaygprs
值的格式为下面的一种(单位为毫秒):值描述注释
gprsGPRS(min150,max550)
edgeEDGE/EGPRS(min80,max400)
umtsUMTS/3G(min35,max200)
none没有延迟(min0,max0)
模拟一个准确的延迟(毫秒)
:模拟一个指定的延迟范围(min,max毫秒)
网速模拟
模拟器同样允许你模拟多种网络传输速度。你可以在模拟器启动时指定传输速度或范围,也可以在模拟器启动后通过控制台动态修改传输速度。
要想在模拟器启动时设置网络传输速度,使用-netspeed选项,后面跟合法的值。下面是一些例子:emulator-netspeedgsm
emulator-netspeed14.480
要想在模拟器运行中动态改变网络传输速度,需要连接上控制台使用netspeed命令,后面跟合法的值。下表中列出了合法的值networkspeed14.480
值的格式为下面的一种(单位为kb/s):
值描述注释
gsmGSM/CSD(Up:14.4,down:14.4)
hscsdHSCSD(Up:14.4,down:43.2)
gprsGPRS(Up:40.0,down:80.0)
edgeEDGE/EGPRS(Up:118.4,down:236.8)
umtsUMTS/3G(Up:128.0,down:1920.0)
hsdpaHSDPA(Up:348.0,down:14400.0)
full无限制(Up:0.0,down:0.0)
设置一个上行和下行公用的准确速度
:分别为上行和下行设置准确的速度
电话功能模拟
Android模拟器拥有自己的GSM模块允许你在模拟器上模拟电话功能。例如,你可以模拟打入电话和建立/终止数据连接。Android系统模拟电话呼叫跟真实情况一样。这个版本暂不支持电话录音。
你可以通过控制台访问模拟器的电话功能。连接上控制台后,你可以使用gsm
来调用电话功能。
gsm命令支持下表列出的子命令。
子命令描述注释
call模拟来自电话号码为的呼叫
voice修改GPRS语音连接的状态为合法的值为:
unregistered-无可用网络home-处于本地网,无漫游roaming-处于漫游网searching-查找网络denied-仅能用紧急呼叫off-同'unregistered'on-同'home'
data修改GPRS数据连接的状态为.合法的值为:
unregistered-无可用网络home-处于本地网,无漫游roaming-处于漫游网searching-查找网络denied-仅能用紧急呼叫off-同'unregistered'on-同'home'
使用模拟器皮肤
你可以让模拟器使用下表介绍的4种皮肤之一。要想指定皮肤,在启动模拟器是使用-skin选项。
例如:emulator-skinHVGA-L
注意:必须用大写(如果你的开发设备大小敏感)。
皮肤ID描述
QVGA-L320×240,横屏(默认)
QVGA-P240×320,竖屏
HVGA-L480×320,横屏
HVGA-P320×480,竖屏
运行多个模拟器实例
如果必要的话,你可以同时运行多个模拟器实例。每个模拟器实例使用独立的用户数据内存和不同的控制台端口。这令你可以独立的管理每一个模拟器实例。
然而,如果你要运行多个模拟器实例,请注意每个实例存储跨会话的持久用户数据的能力-用户设置和安装的应用程序-会受限制。具体如下:只有第一个模拟器实例能根据会话保存用户数据。默认情况下它把用户数据保存在开发设备的~/.android/userdata.img(onLinuxandMac)或C:\DocumentsandSettings\\LocalSettings\Android\userdata.img(onWindows)文件里。你可以在启动模拟器时使用-data选项来控制用户数据的存储(和加载)位置(请参考启动选项)。
在第一个实例后启动的模拟器实例(并行的)在会话过程中也保存用户数据;但它们butthey不为下一个会话保存它。这些实例将数据保存在临时文件中,当实例退出时,相应的临时文件会被删除。
在模拟器上安装应用程序
要想在模拟器上安装应用程序安装,要用到adb工具。
注意:模拟器通过重启保存用户设置和安装的程序。默认情况下,模拟器将数据保存在开发设备的一个文件里。在Linux和Mac操作系统下,模拟器将用户数据报讯在~/.android/userdata.img。在Windows下,模拟器将数据保存在C:\DocumentsandSettings\\LocalSettings\Android\userdata.img。模拟器用userdata.img文件的内容作为data/的目录。
SD卡模拟
你可以创建磁盘镜像并在模拟器启动时加载它,来模拟设备中用户的SD卡。下面的章节将介绍如何创建磁盘镜像、如何向磁盘镜像像拷贝文件和如何在模拟器启动时加载镜。
注意:只能在模拟器启动是加载磁盘镜像。同理,模拟器运行时不能移除SD卡。然而,你可以通过adb或模拟器浏览、发送、拷贝和删除模拟SD卡上的文件。
同时还要注意,模拟SD卡的大小不能超过2GB。
创建磁盘镜像
你可以用SDK中的mksdcard工具来创建可以在模拟器启动时加载的FAT32磁盘镜像。你可以在SDK的tools/目录下找到mksdcard,用下面的命令船检磁盘镜像:mksdcard
例句:
mksdcard512MSD.IMG//这样就会在tools目录下生成一个512M的sd.img文件
启动一个带有SD卡的模拟器:
emulator-avdg2-sdcardsd.img//g2是先前设置好的AVD名称
拷贝文件到磁盘镜像
一旦你创建了一个磁盘镜像,你就可以在模拟器加载它之前拷贝文件到镜像中。要拷贝文件,你可以将镜像加载为循环设备然后向里面拷贝文件,或者你可以使用mtools工具包中的mcopy直接将文件拷贝到镜像中。mtools包在Linux、Mac和Windows下均可用。
在模拟器启动时加载磁盘镜像
要想在模拟器中加载FAT32格式的磁盘,启动模拟器时带上-sdcard标记并指定镜像的名称和路径(相对于当前工作目录):emulator-sdcard
故障排除
adb工具把模拟器当成是一个真实的物理设备。因此,你需要在使用adb命令例如install时加上-d标记。-d标记允许你在众多连接设备中指定使用哪一个设备作为命令的目标。如果不指定-d,模拟器会选择列表中的第一个设备。向了解更多关于adb的信息,请参考AndroidDebugBridge。
对于运行在MacOSX上的模拟器,如果你在启动模拟器时遇到"Warning:NoDNSserversfound"错误,请查/etc/resolv.conf文件是否存在。如果不存在,请在命令窗口中运行下面的命令:ln-s/private/var/run/resolv.conf/etc/resolv.conf
模拟器的限制
这一版的模拟器存在如下限制:不支持呼叫和接听实际来电;但可以通过控制台模拟电话呼叫(呼入和呼出)
不支持USB连接
不支持相机/视频捕捉
不支持音频输入(捕捉);但支持输出(重放)
不支持扩展耳机
不能确定连接状态
不能确定电池电量水平和交流充电状态
不能确定SD卡的插入/弹出
不支持蓝牙