Android模拟器是一个基于QEMU的应用程序。它可以提供一个虚拟的ARM移动设备。在此之上,您可以运行您的Android应用程序。它包括一套系统栈,下至内核级别,和一套预制的应用软件,包括拨号器。这些软件您都可以在您的应用程序中访问。它提供一套可替换的移动设备UI,可定制的键盘影射和多种命令行参数来控制模拟器的行为。
SDK中分布式的Android系统镜像包括Android linux内核的ARM机器码,本地库,Dalvik VM和多个Android包文件(比如Android框架和预制的应用程序)。模拟器的QEMU层为操作系统和您开发的应用程序提供符合ARM规范的二进制编译码。
添加定制的能力到基础的QEMU服务,Android模拟器支持很多硬件,包括:
一个ARMv5和一致的内存管理单元
一个16位的LCD显示器
一个或更多的键盘(一个Qwerty键盘和相关的电话触摸快捷键)
一块带有输出和输入能力的声音芯片
闪存
GSM模块,包括一个模拟的SIM卡
后面对各章节将讲解模拟器如何在开发平台上工作。
开始和停止模拟器
在开发和测试您的应用程序期间,您可以在模拟器里安装和运行您的应用程序。您可以从命令行启动Android模拟器,或者您把它作为您Eclipse开发环境的一部分来调用。在其它情况下,您可以指定启动参数来控制模拟器。启动参数会在本文其它部分描述。
您可以运行您的应用程序在一个单独的模拟器实例中,或者根据于您的需求在启动多个模拟器实例,并且同时在多个虚拟设备上。您可以使用模拟器内建的命令行工具在两台虚拟设备之间发起GSM呼叫或SMS通信。并且您可以在两台虚拟设备之间建立网络连接来发送数据。更多信息请参见模拟电话、模拟短信和模拟网络部分。
在命令行环境下启动模拟器,将路径切换到
如果您工作在Eclipse环境,ADT插件在您调试应用程序时可以自动安装您的应用程序并且启动模拟器。您可以在Run/Debug对话框Target标签页中指定启动参数。模拟器启动后,您可以按照文本后面的相关段落中的描述在命令行向模拟器发出命令。
如果您工作在非Eclipse环境中,请参见模拟器安装应用程序一节。
停止模拟器只要关闭模拟器窗口。
控制模拟器
您可以使用启动参数和命令行命令控制模拟器和典型的模拟器环境。
模拟器在运行时,您可以与模拟设备交互,就如同您有一部真机一样。当然,您只能用鼠标指针来模拟触摸屏的触摸动作了。同样,您可以用鼠标模拟键盘动作。
下表列出了模拟器按键和键盘按键的影射关系。
模拟器设备按键 |
键盘键 |
Home |
HOME |
Menu(左软键) |
F2 或者 Page-up |
Star(右软键) |
Shift-F2 或者 Page-down |
Back |
ESC |
Call/dial button |
F3 |
Hangup/end call button |
F4 |
Search |
F5 |
电源按钮 |
F7 |
音频音量增加旋钮 |
KEYPAD_PLUS, Ctrl-5 |
音频音量减少旋钮 |
KEYPAD_MINUS, Ctrl-F6 |
摄像机按钮 |
Ctrl-KEYPAD_5, Ctrl-F3 |
切换前一布局器 |
KEYPAD_7, F11 |
切换后一布局器 |
KEYPAD_9, F12 |
网络乒乓开关 |
F8 |
代码特性开关 |
F9(仅在 |
全屏模式 |
Alt-Enter |
轨迹球模式 |
Ctrl-T |
DPad left/up/right/down |
KEYPAD_4/8/6/2 |
导航面板中间按键 |
KEYPAD_5 |
环形旋钮 |
KEYPAD_MULTIPLY(*) / KEYPAD_DIVIDE(/) |
注意:您开发机的键盘必须关闭NumLock。
模拟器启动参数
模拟器支持多种启动参数。您可以配置这些参数来控制模拟器行为和外观。下面是模拟器参数的用法。
emulator [-
下面的表总结了可用的参数
Category |
Option |
Description |
Comments |
Help |
-help |
打印模拟器参数列表。 |
|
-help-all |
打印所有启动参数明细。 |
|
|
-help- |
打印指定启动参数的信息。 |
|
|
-help-debug-tags |
打印所有被-debug |
|
|
-help-disk-images |
打印正在使用的磁盘镜像信息。 |
|
|
-help-environment |
打印模拟器环境变量信息。 |
|
|
-help-keys |
打印当前的键盘映射。 |
|
|
-help-keyset-file |
打印一个自定义的键盘映射文件的定义。 |
|
|
Disk Images |
-cache |
使用 |
自定义,您可以指定一个当前工作目录的相对路径。如果没有指定缓存文件,模拟器会指定一个零时文件作为缓存文件。更多信息请参考-help-disk-images. |
-data |
使用 |
自定义,您可以指定一个当前工作目录的相对路径。如果-data没有被使用,模拟器会在 如果您使用了-data 更多信息请参见运行多个模拟器实例和-help-disk-images。 |
|
-image |
使用 |
自定义,您可以指定一个当前工作目录的相对路径。默认为 |
|
-initdata |
重写用户数据镜像时,(使用 -wipe-data),复制此文件内容到新用户数据文件镜像中。默认方式下,模拟器拷贝 |
自定义,您可以指定一个当前工作目录的相对路径。参见-wipe-data。 更多信息请参见-help-disk-images。 |
|
-kernel |
使用 |
自定义,您可以指定一个当前工作目录的相对路径。 |
|
-nocache |
启动模拟器时无缓存分区。 |
参见-cache |
|
-ramdisk |
使用 |
默认为 自定义,您可以指定一个当前工作目录的相对路径。更多信息请参见-help-disk-images。 |
|
-sdcard |
使用 |
默认为 自定义,您可以指定一个当前工作目录的相对路径。更多信息请参见-help-disk-images。 |
|
-system |
在指定的 |
|
|
-wipe-data |
重至用户数据镜像文件。(that is, the file specified by -datadir and -data, or the default file). 模拟器删除所有用户数据,然后复制右-inidata参数指定的数据到镜像文件,在启动之前。 |
参见-initdata. 更多信息请参见-help-disk-images。 |
|
Debug |
-debug |
开启/关闭指定tag的调试信息。 |
|
-debug- |
开启/关闭指定tag的调试信息。 |
使用-help-debug-tags获得您可以指定为 |
|
-debug-no- |
关闭指定tag的调试信息。 |
||
-logcat |
打开指定tag的日志输出。 |
如果环境变量ANDROID_LOG_TAGS被指定且不为空,她的值将成为日志输出的默认值。 |
|
-shell |
创建一个拥有root权限的命令行窗口。 |
即使模拟器的UI界面无法使用了,您依然可以使用命令行窗口。按Ctr-c键中断模拟器运行。 |
|
-shell-serial |
打开具有root权限的脚本窗口。 |
这儿有一些例子: · -shell-serial stdio is identical to -shell · -shell-serial tcp::4444,server,nowait 让您的shell可以通过4444端口通讯。 · -shell-serial fdpair:3:6 让模拟器可以使用3 (in)和6(out)磁碟机。 · -shell-serial fdpair:0:1 uses the normal stdin and stdout fds, except that QEMU won't tty-cook the data. |
|
-show-kernel |
显示内核信息。 |
|
|
-trace |
Enable code profiling (press F9 to start), written to a specified file. |
|
|
-verbose |
开启冗长输出。 |
Equivalent to -debug-init. 您可以定义ANDROID_VERBOSE环境变量作为冗长输出参数。定义你想用到的参数,用逗号分割。这样可以省略像-debug- 下面是一个设置ANDROID_VERBOSE的例子,它带有-debug-init和 -debug-modem 参数: ANDROID_VERBOSE=init,modem 更多信息参见<-help-debug-tags>. |
|
Media |
-audio |
使用指定的音频后端。 |
|
-audio-in |
使用指定的音频输入后端。 |
|
|
-audio-out |
使用指定的音频输出后端。 |
|
|
-noaudio |
在当前虚拟机实例中关闭音频支持。 |
|
|
-radio |
重新定向收音机接口到本地的字节设备。 |
|
|
-useaudio |
打开模拟器实例的音频支持。 |
默认为打开。 |
|
Network |
-dns-server |
使用指定的DNS服务器。 |
|
-http-proxy |
配置TCP连接使用HTTP/HTTPS代理。 |
前缀http://可以被忽略。如果-http-proxy |
|
-netdelay |
设置网络延迟 |
默认值为none。参见Network Delay Emulation中关于 |
|
-netfast |
快捷的 -netspeed full -netdelay none |
|
|
-netspeed |
指定模拟器网络速度为 |
默认值为full。参见表格Network Speed Emulation 中的 |
|
-port |
指定模拟器网络端口为 |
控制台端口号必须介于5554和5584之间,并且 |
|
-report-console |
启动前向第三方同志此模拟器实例的网络端口。 |
tcp: 更多信息参见 -help-report-console |
|
System |
-cpu-delay |
降低模拟器CPU的速度到 |
注意 |
-gps |
重定向NMEA GPS到字节设备。 |
使用此参数通知模拟器模拟一个NMEA-compatible GPS,连接到一个扩展的设备或socket端口。 |
|
-nojni |
在Dalvik运行时关闭JNI检查 |
|
|
-qemu |
传递参数到qemu。 |
|
|
-qemu -h |
关闭qemu帮助。 |
||
-radio |
重定向录音机模块到制定的字符设备。 |
|
|
-timezone |
设定模拟器时区为 |
"America/Los_Angeles" |
|
-version |
显示模拟器版本号。 |
|
|
UI |
-dpi-device |
修改模拟器的分辨率适配物理设备。 |
默认值为165。参见-scale. |
-no-boot-anim |
关闭模拟器启动时的动画。 |
禁用启动动画可以加快启动速度。 |
|
-no-window |
关闭模拟器的绘制窗口。 |
|
|
-scale |
调整模拟器窗口。 |
|
|
-raw-keys |
关闭Unicode键盘reverse-mapping. |
|
|
-noskin |
不使用任何模拟器皮肤。 |
|
|
-keyset |
用指定的键盘设置文件代替默认。 |
指定宿主键盘和模拟器之间的键盘映射文件。更多信息参见-help-keyset。 |
|
-onion |
用图片覆盖屏幕。 |
不支持JPEG,只支持PNG |
|
-onion-alpha |
指定onion皮肤透明值(百分比) |
默认为50. |
|
-onion-rotation |
指定onion皮肤旋转。 |
|
|
-skin |
启动模拟器,搭配指定皮肤。 |
The SDK includes a choice of four skins: · HVGA-L (480x320, landscape) · HVGA-P (320x480, portrait) (default) · QVGA-L (320x240, landscape) · QVGA-P (240x320, portrait) |
|
-skindir |
在指定目录 |
|