[转帖]通过命令行来管理AVD(管理Android设备管理器)_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3043 | 回复: 0   主题: [转帖]通过命令行来管理AVD(管理Android设备管理器)        下一篇 
huizai
注册用户
等级:少校
经验:933
发帖:83
精华:0
注册:2013-6-18
状态:离线
发送短消息息给huizai 加好友    发送短消息息给huizai 发消息
发表于: IP:您无权察看 2013-6-25 16:06:01 | [全部帖] [楼主帖] 楼主

负责人:cdkd123
原文链接:http://docs.eoeandroid.com/tools/devices/managing-avds-cmdline.html

  • 快速预览*

  • 显示已有虚拟设备列表

  • 创建AVDs

  • 定制你的设备分辨率或(屏幕)密集度(resolution or density)

  • AVD文件的默认位置

  • 设置硬件模拟选项

  • 移动AVD

  • 更新AVD

  • 删除AVD

  • 更多请参考*

  • 命令行方式构建与运行程序

  • 使用安卓模拟器

在命令行中使用安卓工具箱管理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并删除它的目录和文件。




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论