负责人:cdkd123
原文链接:http://docs.eoeandroid.com/tools/devices/managing-avds-cmdline.html
在命令行中使用安卓工具箱管理AVDs。请查看"安卓工具参考文档",获得关于命令行参数的完整描述。
显示已有虚拟设备列表
在命令行中显示系统镜像目标的列表,使用如下命令:
android list targets
安卓工具(android tool)扫描 /platforms/ 目录和 /add-ons/ 目录,查找有效的系统镜像,形成一个列表(包含每个镜像的详细信息),这里有一些例子,用于展示命令行输出:
Available Android targets:
id: 1 or "android-3"
Name: Android 1.5
Type: Platform
API level: 3
Revision: 4
Skins: QVGA-L, HVGA-L, HVGA (default), HVGA-P, QVGA-P
id: 2 or "android-4"
Name: Android 1.6
Type: Platform
API level: 4
Revision: 3
Skins: QVGA, HVGA (default), WVGA800, WVGA854
id: 3 or "android-7"
Name: Android 2.1-update1
Type: Platform
API level: 7
Revision: 2
Skins: QVGA, WQVGA400, HVGA (default), WVGA854, WQVGA432, WVGA800
id: 4 or "android-8"
Name: Android 2.2
Type: Platform
API level: 8
Revision: 2
Skins: WQVGA400, QVGA, WVGA854, HVGA (default), WVGA800, WQVGA432
id: 5 or "android-9"
Name: Android 2.3
Type: Platform
API level: 9
Revision: 1
Skins: HVGA (default), WVGA800, WQVGA432, QVGA, WVGA854
创建AVDs
除了使用AVD Manager可视化的创建AVDs,你还可以在命令行通过传递参数,给安卓工具(android tool)创建AVDs。
打开一个终端窗口,切换目录到 /tools。
要创建一个AVD,使用android create avd命令,给出几个参数:要创建的avd的名字以及当avd在模拟器上被唤醒时加载的系统镜像名。当然还可以指定其他参数,例如,虚拟sd卡的大小,模拟器的皮肤,或者自定义用户数据文件的位置。
下面举个例子演示如何创建AVD:
android create avd -n -t [- ] ...
你可以选择用任何名字命名AVD,可是,一旦你选择了一个名字,即是选择了以后都会用此名称识别该AVD提供的一般特征。target id是安卓工具生成的整数。target ID和系统镜像名,版本号,api等级,或其他属性没半毛钱关系,所以你要用android list targets命令理出每个系统镜像的目标ID。在创建avd前你应该用这个命令看���。想知道关于命令行选项的更多信息,请查看安卓工具文档。
当你已经选择了一个目标并且记住了它的id,就使用 android create avd 命令创建AVD,使用选择项参数-t.
这里有一个例子,AVD的名字用 "my_android1.5",目标ID为"2".(就是上面列表中的标准的安卓1.5版系统镜像)
android create avd -n my_android1.5 -t 2
选择的是标准安卓系统镜像("Type:platform"),安卓工具会接着询问你是否创建定制的硬件配置文件。
安卓1.5是一个最基础的安卓系统。
Android 1.5 is a basic Android platform.
Do you wish to create a custom hardware profile [no]
如果你希望给AVD设置定制的硬件模拟器选项,输入"yes"并且设置必要的值。若使用默认值,直接回车(即默认no)。安卓工具会用你指定的选项,指定的名字创建AVD、系统镜像。更多信息,查阅设置模拟器硬件选项。
注意:当你正在创建的AVD,其目标如果是SDK add-on,安卓工具会禁止设置模拟器硬件选项,因为工具会假设add-on的提供者已经设置模拟器选项,防止你再去修改。
定制你的设备分辨率或(屏幕)密集度
当测试应用时,我们建议多用几个AVD测试一下,就会用到不同配置的屏幕(不同的尺寸和密度)。另外,你创建的AVD的物理尺寸和实际的设备应该一致(不要随便输入分辨率)。
设置AVDs的具体分辨率或密集度,遵循如下几步:
1.使用create avd 命令创建一个新的AVD,指定选择项 --skin ,值为默认名称(例如WVGA800) 或者自己输入的分辨率(例如240x432).举个例子:
android create avd -n -t --skin WVGA800
2.要定制模拟器的屏幕密集度,需要提示"是否创建在创建定制的硬件配置文件?"时输入"yes"。
3.接着会继续提示输入不同的配置参数,直到提示你指定一个"抽象LCD密集度"(hw.lcd.desity).输入合适的值,例如"120"适合低密度的屏幕,"160"适合中等的,或者"240"就适合高密度的屏幕。
4.设置其他硬件选项和完善AVD创建
上面的那行命令(WVGA 中等屏幕),创建的新AVD会模拟出5.8"的WVGA屏幕。
因为调整模拟器的外观的配置是可选的,你也可以采用默认的密集度并且启动AVD时给emulator命令加一个 -dpi-device 选项。例如:
emulator -avd WVGA800 -scale 96dpi -dpi-device 160
AVD文件的默认位置
当你创建一个AVD,安卓工具创建一个默认目录。此目录包含了AVD配置文件,用户数据镜像和SD卡镜像,以及其他相关的文件。注意,此目录不包含系统镜像(system image) -- 而是,AVD配置文件包含了此系统镜像,该镜像会在AVD启动时加载。
安卓工具也会在 .android/avd/ 目录的根目录下创建一个 .ini文件。此文件指定了AVD目录位置并且总是在.android目录的根目录.
默认,Linux/Mac系统中,安卓工具会在 ~/.android/avd/ 创建AVD目录,window XP系统中会在 C:Documents and Settings.android 目录。win7和Vista是在C:Users.android.如果你希望改变此目录位置,使用 -p <路径> 选项。有一个例子:
android create avd -n my_android1.5 -t 2 -p path/to/my/avd
如果.android目录被网络驱动托管,我们建议使用 -p 选项设定其他目录代替此目录。不管AVD目录是否改变,.ini文件只存在于此网络驱动托管的.android目录。
设置硬件模拟选项
当你正在标准系统镜像(Type:platform)创建新的AVD时,安卓工具允许设置AVD的硬件模拟选项。下表里除了各种可用选项和默认值,同样这些属性的名字也会保存在AVD's的配置文件中(config.ini文件在AVD的本地目录)。
表1. 可用的硬件配置选项和默认值。
<!-- 表格开始 -->
{|style="border-spacing: 0px;margin: 4px 4px; width: 90%; border-left:1px solid #ccc;border-top:1px solid #ccc; "
<!-- 这段是表头 -->
|-style="background:#DEE8F1; "
! style="border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px" | 特征
! style="border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px" | 描述
! style="border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px" | 属性
<!-- 这段是表格 -->
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | ram大小
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |设备物理RAM的大小,单位megabytes.默认值96.
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |hw.ramSize
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |触屏支持
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |设备是否有触屏功能。默认值"yes"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |hw.touchScreen
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |轨迹球支持
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |设备是否有轨迹球。默认值"yes"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | hw.trackBall
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |键盘支持
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |设备是否有QWERTY(传统)键盘。默认值"yes"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |hw.keyboard
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |手柄支持
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |设备是否支持手柄。默认值"yes"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |hw.dPad
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |GSM支持
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |设备是否有GSM调制解调器。默认值"yes"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |hw.gsmModem
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |相机支持
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |设备是否有相机。默认值"no"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |hw.camer
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |相机像素水平最大值
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |默认值"640"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |hw.maxHorizontalPixels
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |相机像素垂直最大值
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |默认值"480"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |hw.camera.maxVerticalPixels
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |GPS支持
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |设备是否有GPS。默认值"yes"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |hw.gps
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |电池支持
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |设备是否有电池。默认值"yes"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |hw.battery
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |加速器
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |设备是否有加速器。默认值"yes"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |hw.accelerometer
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |录音支持
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |设备是否支持录音。默认值"yes"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |hw.audioInput
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |后台播放音频
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |设备是否支持音频播放。默认值"yes"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |hw.audioOutput
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |SD卡支持
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |设备是否支持传入/移除SD卡。默认值"yes"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |hw.sdCard
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |Cache分区
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |设备是否使用/cache分区。默认值"yes"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |disk.cachePartition
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |Cache分区大小
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |默认值66MB.
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |disk.cachePartition.size
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |抽象液晶密度 AVD的屏幕的广义密度值。
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |默认值"160"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |hw.lcd.density
|}
<!-- 表格结束 -->
移动AVD
如果你想移动或重命名AVD,你可以使用如下命令:
android move avd -n [- ] ...
更新AVD
如果,platform/add-on这个根目录改变了(可能因为用户安装或更新platform/add-on)。那么AVD就不能加载他关联的系统镜像。碰到这种情况,android list targets 命令会输出这些信息:
The following Android Virtual Devices could not be loaded:
Name: foo
Path: /.android/avd/foo.avd
Error: Invalid value in image.sysdir. Run 'android update avd -n foo'
删除AVD
你可以用安卓工具删除AVD,这里有个演示命令:
android delete avd -n
当你执行了这条命令,安卓工具就会查找匹配的AVD并删除它的目录和文件。