转http://www.eoeandroid.com/thread-23281-1-1.html html
Android模拟器ndroid SDK自带一个移动设备模拟器 — 它是一个能够运行在你电脑上的虚拟设备. Android模 拟器可让你不需使用物理设备便可预览、开发和测试Android应用程序.
Android模拟器可以模拟除了接听和拨打电话外的全部移动设备上的典型功能和行为. 如右图所示, Android模拟器提供了大量的导航和控制键,你能够经过鼠标或键盘点击这些按键来为你的应用程序产生 事件. 同时它还有一个屏幕用于显示Android自带应用程序和你本身的应用程序.
为了便于模拟和测试应用程序, Android模拟器容许你你的应用程序经过Android平台服务调用其余程 序、访问网络、播放音频和视频、保存和**数据、通知用户、渲染图像过渡和场景.
Android模拟器一样具备强大的调试能力,例如可以记录内核输出的控制台、模拟程序中断(好比接受 短信或打入电话)、模拟数据通道中的延时效果和遗失。
下面的章节将提供关于模拟器的详细信息,以及如何在开发应用程序中使用模拟器。
启动和关闭模拟器
要启动Android模拟器,首先进入SDK的tools/文件夹,而后输入 emulator 或 ./emulator。这个操做将初始化Android系统,你将会在屏幕 上看到模拟器窗口。
要关闭模拟器,只须要关闭模拟器窗口便可。
操做模拟器
你能够经过模拟器的启动选项和控制台命令来控制模拟环境的行为和特性。一旦模拟器启动,你就能够经过键盘和鼠标来”按” 模拟器的按键,从而操做模拟器。
下面的表格总结了模拟器按键可键盘按键之间的映射关系。 android
模拟器按键 | 键盘按键 |
后退 | ESC |
菜单 | F1 或 PgUp |
开始 | F2 或 PgDn |
呼叫 | F3 |
挂断 | F4 |
— | F5, F6 未分配 |
电源按键 | F7 |
禁用/启用全部网络 | F8 |
开始跟踪 | F9 (当且仅当有-trace标记时有效) |
中止跟踪 | F10 (当且仅当有-trace标记时有效) |
主页 | HOME |
方向键 左/上/右/下 | 小键盘 4/8/6/2 |
方向键 中心建 | 小键盘 5 |
调低音量 | 小键盘 负号(-) |
调高音量 | 小键盘 加号(+) |
模拟器启动选项
Android模拟器提供了不少启动选项,你能够在启动模拟器时指定,来控制其外观和行为。下面是用命 令行的方式启动模拟器并指定参数的语法: 网络
下表总结了全部有效的选项。
tcp
类型 | 选项 | 描述 | 注释 |
帮助 | -help | 以列表的形式打印模拟器的全部命令 | |
数据 | -data [file] | 使用<file>看成用户数据的磁盘镜像 | 若是没有-data,模拟器会在~/.android (Linux/Mac) 或C:\Documents and Settings\<user>\Local Settings\Android (Windows)中查找文件名为”userdata.img”的文件。 若是使用了-data <file>但<file>不存在,模拟器会在那个位置建立一个文件 |
-ramdisk <file> | 使用<file>做为RAM镜像 | 默认值为<system>/ramdisk.img | |
-sdcard <file> | 使用<file> 做为SD卡镜像 | 默认值为<system>/sdcard.img | |
-wipe-data | 启动前清除用户磁盘镜像中的全部数据(参考-data) | ||
调试 | -console | 容许当前中断使用控制台Shell | |
-debug-kernel | 将内核输出发送到控制台 | ||
-logcat <logtags> | 容许根据给定的标签为输出分类 | 若是定义了环境变量ANDROID_LOG_TAGS而且不为空, 它的值将被做为logcat的默认值。 |
|
-trace <name> | 容许代码剖析(按F9键开始) | ||
-verbose | 容许详细信息输出 | ||
-verbosekeys | 容许详细输出按键信息 | ||
媒体 | -mic <device or file> | 使用设备或者WAV文件做为音频输出 | |
-noaudio | 禁用Android的音频支持 | 默认禁用 | |
-radio <device> | 将无线调制解调器接口重定向到主机特征设备 | ||
-useaudio | 启用Android音频支持 | 默认不启用 | |
网络 | -netdelay <delay> | 设置网络延迟模拟的延迟时间为<delay>. | 默认值是none。请参考[url=http:/#.E7.BD.91.E9.80.9F.E6.A8.A1.E6.8B.9F]网络延迟模拟[/url]中表”支持的<delay>值” |
-netfast | -netspeed full -netdelay none的快捷方式 | ||
-netspeed <speed> | 设置网速模拟的加速值为<speed>. | 默认值为full。请参考[url=http:/#.E7.BD.91.E9.80.9F.E6.A8.A1.E6.8B.9F]网速模拟[/url]中表”支持的<speed>值” | |
系统 | -image <file> | 使用<file>做为系统镜像 | 默认值为<system>/system.img |
-kernel <file> | 使用<file> 做为模拟器内核 | ||
-nojni | |||
-qemu | 传递qemu参数 | ||
-qemu -h | 显示qemu帮助信息 | ||
-system <dir> | 在<dir>目录下查找系统、RAM和用户数据镜像 | ||
UI | -flashkeys | 在设备皮肤上闪烁按下的键 | |
-noskin | 不使用任何模拟器皮肤 | ||
-onion <image> | 在屏幕上使用覆盖图 | 不支持JPEG格式图片,仅支持PNG格式图片 | |
-onion-alpha <percent> | 指定onion皮肤的半透明值(单位%). | 默认值为50 | |
-skin <skinID> | 用指定皮肤启动模拟器 | SDK提供了4个可选皮肤: QVGA-L (320×240, 风景) (默认)QVGA-P (240×320, 肖像)HVGA-L (480×320, 风景)HVGA-P (320×480, 肖像) |
|
-skindir <dir> | 在<dir>目录下查找皮肤 |
使用模拟器控制台
每个运行中的模拟器实例都包括一个控制台,你能够利用控制台动态的查询和控制模拟设备的环境 。例如,你能够利用控制台动态的管理端口映射和网络特性,还能够模拟电话时间。要想进入控制台输入 命令,你须要使用telnet链接到控制台的端口号。
你可使用下面的命令随时随地链接到任何一个运行中的模拟器实例: 工具
假设第一个模拟器实例的控制台使用5554端口,下一个实例使用的端口号会加2,好比555六、5558…… 等。你能够在启动模拟器是使用-verbose选项来检测该模拟器实例使用的端口号,在调试 输出的找到以”emulator console running on port number“这一行。 另外, 你可 以在命令行中使用adb devices来查看模拟器实例和他们的端口列表。最多能够有16个模拟 器实例同时运行控制台。
注意:模拟器**端口5554-5587的来自任何电脑的链接。未来发布的版本将只接受本 机的链接,但目前,你须要用防火墙阻断外部对你开发设备的5554-5587这些端口的链接。
一旦链接上控制台, 你能够输入help [command]来查看命令列表和指定命令的教程。
要离开控制台会话, 使用quit 或 exit 命令。
下面的章节将介绍控制台的主要功能区域。
端口重定向
你能够在模拟器运行期间添加和删除端口重定向。链接上控制台后,你能够经过下面的方法管理端口 重定向: 测试
支持下表列出的子命令:
ui
子命令 | 描述 | 注释 |
list | 列出当前的端口重定向 | (min 150, max 550) |
add <protocol>:<host-port>:<guest-port> | 添加新的端口重定向 | <protocol> 必须是”tcp” 或 “udp”<host-port> 是主机上开启的端口号<guest-port> 是向模拟器/设备发送数据的端口号 |
del <protocol>:<host-port> | 删除端口重定向 | <protocol> and <host-port>的含义同上 |
网络情况
你能够利用控制台检测网络情况和当前延迟、加速特性。要想检测网络状态须要链接到控制台,使用 netstatus 命令。下面是命令和输出的例子。 url
网络延迟模拟
模拟器容许你模拟多种网络延迟等级, 所以你能够在更接近真实状况的环境下测试你的应用程序。你 能够在模拟器启动时设置延迟等级或范围,也能够在模拟器运行期间经过控制台动态修改延迟。
要想在模拟启动时设置延迟,使用-netdelay选项,后面跟一个合法的 <delay>值。这里给出一些例子: spa
要想在模拟器运行期间动态修改网络延迟,须要链接上控制台使用netdelay命令,后面 跟合法的 <delay>值。下表中列出了合法的<delay>值 操作系统
值的格式为下面的一种(单位为毫秒):
值 | 描述 | 注释 |
gprs | GPRS | (min 150, max 550) |
edge | EDGE/EGPRS | (min 80, max 400) |
umts | UMTS/3G | (min 35, max 200) |
none | 没有延迟 | (min 0, max 0) |
<num> | 模拟一个准确的延迟(毫秒) | |
<min>:<max> | 模拟一个指定的延迟范围(min, max 毫秒) |
网速模拟
模拟器一样容许你模拟多种网络传输速度。你能够在模拟器启动时指定传输速度或范围,也能够在模 拟器启动后经过控制台动态修改传输速度。
要想在模拟器启动时设置网络传输速度,使用-netspeed选项,后面跟合法的 <speed>值。下面是一些例子:
要想在模拟器运行中动态改变网络传输速度,须要链接上控制台使用netspeed命令,后 面跟合法的<speed>值。下表中列出了合法的<speed>值
<speed>值的格式为下面的一种(单位为kb/s):
值 | 描述 | 注释 | |
gsm | GSM/CSD | (Up: 14.4, down: 14.4) | |
hscsd | HSCSD | (Up: 14.4, down: 43.2) | |
gprs | GPRS | (Up: 40.0, down: 80.0) | |
edge | EDGE/EGPRS | (Up: 118.4, down: 236.8) | |
umts | UMTS/3G | (Up: 128.0, down: 1920.0) | |
hsdpa | HSDPA | (Up: 348.0, down: 14400.0) | |
full | 无限制 | (Up: 0.0, down: 0.0) | |
<num> | 设置一个上行和下行公用的准确速度 | ||
<up>:<down> | 分别为上行和下行设置准确的速度 |
电话功能模拟
Android模拟器拥有本身的GSM模块容许你在模拟器上模拟电话功能。例如,你能够模拟打入电话和建 立/终止数据链接。Android系统模拟电话呼叫跟真实状况同样。这个版本暂不支持电话录音。
你能够经过控制台访问模拟器的电话功能。链接上控制台后,你可使用
来调用电话功能。
gsm命令支持下表列出的子命令。
子命令 | 描述 | 注释 |
call <phonenumber> | 模拟来自电话号码为<phonenumber>的呼叫 | |
voice <state> | 修改GPRS语音链接的状态为<state> | 合法的<state>值为: unregistered — 无可用网络home — 处于本地网,无漫游roaming — 处于漫游网searching — 查找网络denied — 仅能用紧急呼叫off — 同’unregistered’on — 同’home’ |
data <state> | 修改GPRS数据链接的状态为<state>. | 合法的<state>值为: unregistered — 无可用网络home — 处于本地网,无漫游roaming — 处于漫游网searching — 查找网络denied — 仅能用紧急呼叫off — 同’unregistered’on — 同’home’ |
使用模拟器皮肤
你可让模拟器使用下表介绍的4种皮肤之一。要想指定皮肤,在启动模拟器是使用-skin <skinID>选项。
例如:
注意:<skinID> 必须用大写(若是你的开发设备大小敏感)。
皮肤ID | 描述 | |
QVGA-L | 320×240, 横屏 (默认) | |
QVGA-P | 240×320, 竖屏 | |
HVGA-L | 480×320, 横屏 | |
HVGA-P | 320×480, 竖屏 |
运行多个模拟器实例
若是必要的话,你能够同时运行多个模拟器实例。每一个模拟器实例使用独立的用户数据内存和不一样的 控制台端口。这令你能够独立的管理每个模拟器实例。
然而,若是你要运行多个模拟器实例,请注意每一个实例存储跨会话的持久用户数据的能力—用户 设置和安装的应用程序—会受限制。具体以下:
在模拟器上安装应用程序
要想在模拟器上安装应用程序安装,要用到adb工具。
注意:模拟器经过重启保存用户设置和安装的程序。默认状况下,模拟器将数据保存在开发设备的一 个文件里。在Linux和Mac操做系统下,模拟器将用户数据报讯在~/.android/userdata.img 。在Windows下,模拟器将数据保存在C:\Documents and Settings\<user>\Local Settings\Android\userdata.img。模拟器用userdata.img文件的内容做为data/的 目录。
SD卡模拟
你能够建立磁盘镜像并在模拟器启动时加载它,来模拟设备中用户的SD卡。下面的章节将介绍如何创 建磁盘镜像、如何向磁盘镜像像拷贝文件和如何在模拟器启动时加载镜。
注意:只能在模拟器启动是加载磁盘镜像。同理,模拟器运行时不能移除SD卡。然而,你能够经过adb 或模拟器浏览、发送、拷贝和删除模拟SD卡上的文件。
同时还要注意,模拟SD卡的大小不能超过2GB。
建立磁盘镜像
你能够用SDK中的mksdcard工具来建立能够在模拟器启动时加载的FAT32磁盘镜像。你能够在SDK的 tools/目录下找到mksdcard,用下面的命令船检磁盘镜像:
拷贝文件到磁盘镜像
一旦你建立了一个磁盘镜像,你就能够在模拟器加载它以前拷贝文件到镜像中。要拷贝文件,你能够 将镜像加载为循环设备而后向里面拷贝文件,或者你可使用mtools工具包中的mcopy直接将文件拷贝到 镜像中。mtools包在Linux、Mac和Windows下都可用。
在模拟器启动时加载磁盘镜像
要想在模拟器中加载FAT32格式的磁盘,启动模拟器时带上-sdcard标记并指定镜像的名 称和路径(相对于当前工做目录):
故障排除
adb工具把模拟器当成是一个真实的物理设备。所以,你须要在使用adb命令–例如 install–时加上-d标记。-d 标记容许你在众多链接设备中指定使用哪个设备做为命令 的目标。若是不指定-d,模拟器会选择列表中的第一个设备。向了解更多关于adb的信息,请参考 Android Debug Bridge。
对于运行在Mac OS X上的模拟器,若是你在启动模拟器时遇到”Warning: No DNS servers found”错误,请查/etc/resolv.conf文件是否存在。若是不存在,请在命令窗口中运行下面的命令 :
模拟器的限制
这一版的模拟器存在以下限制: