《Android应用开发攻略》——3.3 为应用测试设置Android虚拟设备(AVD)

3.3 为应用测试设置Android虚拟设备(AVD)

Daniel Fowler
3.3.1 问题
成功的应用程序必须运行于各种不同的Android设备及其版本上,所以必须在一系列设备上进行测试。
3.3.2 解决方案
使用Android SDK的设备模拟工具包配置设备和操作系统的组合,通过在各种组合上的测试能够减少与设备硬件差异相关的问题。
3.3.3 讨论
Android设备从廉价到“高规格/高价值”,覆盖了广泛市场,出现在市场上也已经有数年之久。因此,市面上使用的设备有着广泛的硬件选择和操作系统版本。成功的应用程序就应该能够在这么广泛的设备上运行,而应用开发人员只能针对很小范围内的实际设备运行程序。幸运的是,开发人员可以使用Android虚拟设备(AVD)来提高对应用程序的信心。
编译后的应用程序可以在物理设备或者虚拟设备上测试。AVD是Android平台在主机(通常是开发机器)上的模拟。
采用AVD对测试进行了简化,这基于如下原因:
可以创建多种AVD配置,在不同版本的Android上测试应用程序。
可以使用不同的(模拟)硬件配置,例如GPS或者无GPS。
在Eclipse中单击Run按钮时,可自动启动AVD并安装编译后的应用程序。
AVD具有比物理设备更多的Android版本和硬件版本组合,可在这种组合环境上测试应用。
在AVD上测试大大地减少了在物理上进行的测试。
AVD可以和物理设备一同使用。
不必为了导致错误情况而对物理设备进行限制——例如,如果你打算在没有安全数码卡(Secure Digital,SD)的设备上测试,只需建立一个没有SD卡的AVD就行了。
AVD可以模拟网络事件,而不需要花费使用物理设备的相关成本;例如,可以模拟电话呼叫或者在两个AVD之间发送SMS。
可以在不移动桌面的情况下,模拟来自不同物理位置的GPS数据。
当应用程序用户报告缺陷时,可以尝试用AVD模拟他们的硬件配置。
请注意,在旧的开发机器上以及模拟较大的Android设备时,AVD的性能将低于物理设备。
可以用SDK Manager程序配置AVD(直接从文件系统或者Eclipse中打开),也可以从命令行上创建AVD。
为了用SDK Manager创建AVD,必须首先加载该程序。从Eclipse中选择菜单栏上的Window(窗口),然后选择Android SDK and AVD Manager,如图3-1所示。

也可以从文件系统中直接启动程序。例如,在Windows中,打开C:\Program Files\Android\android-sdk\SDK Manager.exe。如果直接从文件系统启动程序,SDK Manager将会检查SDK更新,这时选择Cancel(取消)进入主窗口,窗口标题为Android SDK and AVD Manager(见图3-2)。如果从Eclipse打开程序,主窗口将会显示,而不会检查SDK更新。

主窗口的左侧列出了“Virtual Devices”(虚拟设备)、“Installed packages”(已安装程序包)和“Available packages”(可用程序包)。“Virtual Devices”应该已经被选中;否则,选中它,可以在右边的表格中列出所有现有的AVD。刚刚安装Android SDK时不会列出任何AVD。
选择New按钮创建AVD,将加载“Create new Android Virtual Device (AVD)”(创建新的Android虚拟设备)窗口(见图3-3)。

如下字段用于定义AVD:
Name
为新的模拟Android设备取一个名称。使用描述性的名称,例如,如果你要模拟一个使用2.1版操作系统和中分辨率屏幕(HVGA)的设备,取名为Android-v2.1- HVGA要好于AndroidDevice。
Target
这是运行于模拟设备上的Android操作系统版本。对于运行版本2.1的设备,这个字段可以设置为“Android 2.1-update1 - API Level 7”。
SD Card
这个字段指定设备模拟的SD卡大小,或者选择现有的SD卡映像(可以在不同的AVD模拟之间共享SD卡数据)。输入以兆字节(MB)为单位的卡容量,指定新的SD卡。记住,输入的数字越大,在主计算机系统上创建的模拟SD卡的文件就越大。作为替代,可以选择File选项并浏览现有的SD卡映像(在Windows机器上,sdcard.img文件可以在登录用户文件夹中的.android目录下的avd子目录中找到)。
Snapshot
如果你希望模拟设备的运行时状态在会话之间持续保存,选中Enabled复选框,当你在执行长时间运行的一系列测试,而关闭AVD你又不希望从头开始测试时,这个选项很有用。这个选项还加速了AVD的启动。
Skin
选择设备的屏幕尺寸;显示一个常见屏幕尺寸的列表(例如HVGA、QVGA等)。该列表根据操作系统版本而有所不同。你也可以输入自定义的分辨率。
Hardware
Hardware(硬件)选项下的表格用于配置AVD具备或者不具备某些硬件特性。首先用New按钮将硬件特性添加到表格中(有几个硬件特性将添加到表格中,并根据Target选项的选择自动成为默认),这时将会打开一个对话框,用于选择硬件属性(见图3-4)。

例如,选择“GPS support”(GPS支持),然后选择“OK”。选择“GPS support in the table”旁边的“yes”,将其修改为“no”,这样AVD将不支持GPS(见图3-5)。
表3-1列出了AVD支持的属性。

定义了必要的字段之后,单击Create AVD按钮生成AVD。现在,AVD出现在Android SDK and AVD Manager窗口中(见图3-6)。

现在可以使用Start按钮启动这个AVD,也可以在项目配置中选择它,在开发中测试应用程序。选择Start按钮时,显示 Launch Options(启动选项)窗口(见图3-7)。
启动选项如下:

将显示缩放为实际尺寸(Scale the display to real size)
在较大的计算机显示器上,通常不需要修改AVD比例。Android屏幕的DPI值高于计算机显示器的DPI值,因此,AVD屏幕显得比物理设备大。如果有必要,可以降低比例以节约屏幕空间。使用这个选项可以使AVD在计算机显示器上以接近真实的屏幕显示。选项中的值必须设置,以免AVD屏幕和键盘尺寸过小而无法使用。
清除用户数据(Wipe user data)
当AVD启动时,用户数据文件被重置,前一次运行AVD时生成的用户数据将会丢失。
从快照启动(Launch from snapshot)
如果AVD启用了Snapshot选项,第一次启动之后,后续的启动将会更快。AVD从一个快照中加载,不需要再次启动Android操作系统。但是当AVD关闭时,因为必须将快照写到硬盘,关机过程将会较长。
保存到快照(Save to snapshot)
AVD关闭时,当前状态将被保存,以加快下一次的启动;但是因为快照要写回磁盘,关闭的时间较长。如果你已经有了快照,可以清除该选项的选择,这样关闭AVD时也同样很快,但是从上一个快照以来的修改将会丢失。
使用Launch按钮启动AVD。一旦加载,AVD就可以像其他Android设备一样使用,由主计算机的键盘和鼠标驱动,见图3-8。

在Windows上启动时的错误消息(Error message on Windows when launching)
试图从Windows安装中启动AVD时,可能出现一个以“invalid command-line parameter”(无效命令行参数)开始的错误(见图3-9)。

为了修复这个问题,将路径改为Android SDK目录,不包含任何空格。默认的SDK安装路径为C:\Program Files\Android。Program Files中的空格必须删除。为了维护有效的目录名称,Program Files应该转换为Microsoft DOS格式(亦称8.3格式)。这通常是前6个字母大写加上~符号和数字1,即PROGRA~1。如果有其他目录名以Program(后面有空格)开始,数字需要递增。要查看Program Files的DOS格式,可以在你的机器上打开命令提示符界面(开始→所有程序→附件→命令提示符),转到根目录(即输入cd\并按回车)并运行dir/x命令,则会看到DOS格式的目录名称将显示在其全名旁边(见图3-10)。

在Eclipse中,使用Windows(菜单)→Preferences(首选项)菜单并选择Android;在SDK Location字段中将Program Files改为DOS版本(见图3-11)。

时间: 2024-10-04 22:54:47

《Android应用开发攻略》——3.3 为应用测试设置Android虚拟设备(AVD)的相关文章

《Android应用开发攻略》——3.10 为测试重现活动生命周期场景

3.10 为测试重现活动生命周期场景 Daniel Fowler3.10.1 问题 应用程序应该适应活动生命周期.开发人员必须知道如何重现不同的生命周期场景.3.10.2 解决方案 利用日志获得对活动生命周期的全面了解,就能更容易地为测试重现生命周期场景.3.10.3 讨论 Android是为了移动的生活方式而设计的,在这种方式下,用户忙于多种工作:打电话.检查邮件.发送SMS信息.参与社交网络.拍照.访问互联网.运行应用程序等,甚至完成某些工作!因此,移动设备可能有多个应用程序,从而在内存中加

《Android应用开发攻略》——第3章 测试 3.1 导言:测试

第3章 测试 3.1 导言:测试 Ian Darwin 讨论 "尽早并经常测试"是测试倡导者们的常用口号.最重要的问题是,"如果你没有测试,如何知道代码能够正常工作?" 测试有许多种类型.单元测试单独检查各个组件(不访问网络或者数据库).JUnit和 TestNG是这方面处于领先地位的框架.在需要与其他组件交互时,单元测试使用模拟对象,有多个好的Java模拟框架. Android提供了许多特殊的测试技术,我们在这里要讨论其中的一些技术. 先介绍一下本章中出现的NPE

《Android应用开发攻略》——导读

前言 对于蜂窝技术和移动计算来说,Android是"开放源码的革命",至少是革命的一部分.从已经不存在的Openmoko FreeRunner到QT Embedded.Moblin. LiMo. Debian Mobile,以及Maemo和最近刚刚开放源码的Symbian OS.刚刚消失的HP WebOS,人们对于提供开放源码的蜂窝技术已经做出了许多的尝试.我们也不要忘记闭源系统的忠实拥趸:BlackBerry OS.Apple iPhone和Microsoft Windows Mob

《Android应用开发攻略》——1.15 程序:Android OS下的小费计算器Tipster

1.15 程序:Android OS下的小费计算器Tipster Sunit Katkar1.15.1 问题 当你和朋友前往饭店就餐并且希望计算各自的账单和小费时,可能陷入许多手动计算和分歧之中.你希望使用一个应用程序,简单地将小费比例加到总额上,并且按照就餐人数分配.Tipster就是Android中的一个实现,用它展示一个完整的应用程序.1.15.2 解决方案 这是一个简单的练习,使用Android中的基本GUI元素,然后用一些简单的计算和事件驱动UI代码将它们组合起来.将用到如下GUI组件

《Android应用开发攻略》——1.12 保持Android SDK更新

1.12 保持Android SDK更新 Daniel Fowler1.12.1 问题 SDK必须保持更新,使应用开发人员能够使用不断发展的Android平台上的最新API.1.12.2 解决方案 使用Android SDK Manager程序更新已安装的SDK包和安装新SDK包,包括用于设备特殊功能的第三方程序包.1.12.3 讨论 Android操作系统不断发展,因此,Android SDK也随之发展.Android持续发展的驱动力是: Google的研究和开发 手机制造商开发新的改进型手机

《Android应用开发攻略》——1.3 从命令行创建 “Hello, World”应用程序

1.3 从命令行创建 "Hello, World"应用程序 Ian Darwin1.3.1 问题 你想在不使用Eclipse ADT插件的情况下创建新的Android项目.1.3.2 解决方案 使用Android开发工具包(Android Development Kit,ADK)中的android工具,利用creat project参数和一些附加参数配置你的项目.1.3.3 讨论 除了平台名称之外,android还是一个用于创建.更新和管理项目的命令行工具的名称.可以进入android

《Android应用开发攻略》——1.4 在Eclipse中创建“Hello, World”应用程序

1.4 在Eclipse中创建"Hello, World"应用程序 Ian Darwin1.4.1 问题 你打算用Eclipse开发Android应用程序.1.4.2 解决方案 安装Eclipse.Android SDK和ADT plug-in.创建项目并开始编写应用程序.从Eclipse中构建项目并在模拟器下测试.1.4.3 讨论 安装如下软件之后,就可以开始开发了: Eclipse IDE Android SDK ADT plug-in 安装上述三个软件的详细讲解请参见攻略1.5.

《Android应用开发攻略》——第2章 设计成功的应用程序 2.1 导言:设计成功的Android应用程序

第2章 设计成功的应用程序 2.1 导言:设计成功的Android应用程序 Colin Wilcox 讨论 本章介绍编写富于想象力而且实用的Android应用的设计指导思想.有几个攻略描述了成功设计的具体特征.本节将列出其他一些方面. 这一章的目的之一是解释相对于其他在移动设备上交付丰富内容的方法,原生Java Android应用程序开发的好处. 原生手机应用程序的要求 不管在何种平台上部署,成功交付任何手机应用程序都有许多关键的要求: 应用程序应该易于在设备上安装.删除和更新. 应该以引人入胜

《Android应用开发攻略》——3.13 发送文本消息以及AVD之间的通话

3.13 发送文本消息以及AVD之间的通话 Johan Pelgrim3.13.1 问题 你开发了一个应用程序,需要拨打或者接听电话,或者收发文本消息,你希望对该程序进行测试.3.13.2 解决方案 启动两个Android虚拟设备(AVD),使用端口号发送文本消息及拨打电话.3.13.3 讨论 当你创建一个接听来电或者文本消息的应用程序(类似于攻略12.2中开发的应用)时,你当然可以使用Eclipse中的DDMS视图模拟通话或者发送文本消息,不过也可以启动另一个AVD! 如果你注意AVD窗口标题