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

简介: 本节书摘来自华章计算机《Android应用开发攻略》一书中的第3章,第3.3节,作者:(美)达尔文(Darwin, I. F.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

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所示。

image


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

image


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

image


如下字段用于定义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)。

image


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

image

image


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

image


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

image


将显示缩放为实际尺寸(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。

image

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

image


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

image


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

image

相关文章
|
2月前
|
存储 Android开发
如何查看Flutter应用在Android设备上已被撤销的权限?
如何查看Flutter应用在Android设备上已被撤销的权限?
195 64
|
2月前
|
存储 Android开发 数据安全/隐私保护
如何在Android设备上撤销Flutter应用程序的所有权限?
如何在Android设备上撤销Flutter应用程序的所有权限?
178 64
|
2月前
|
缓存 Android开发 开发者
Flutter环境配置完成后,如何在Android设备上运行Flutter应用程序?
Flutter环境配置完成后,如何在Android设备上运行Flutter应用程序?
450 62
|
2月前
|
开发工具 Android开发 开发者
在Android设备上运行Flutter应用程序时,如果遇到设备未授权的问题该如何解决?
在Android设备上运行Flutter应用程序时,如果遇到设备未授权的问题该如何解决?
194 61
|
23天前
|
存储 算法 5G
可测多种时间频率信号精度的设备有哪些、标准时钟测试仪、gps时间校验仪
时间频率综合测试仪用于分析时间频率信号的精度与特性,支持多种标准,如B码、NTP、PTP等。其发展趋势包括:1. 高精度化,满足5G等新兴领域需求;2. 智能化,实现自动校准与故障诊断;3. 集成化多功能化,整合多参数测量功能;4. 小型化便携化,便于现场使用;5. 高速实时处理,提升数据处理能力;6. 网络化远程控制,支持远程操作与管理。例如SYN5104型设备,在多项指标上达到高精度,并具备网络接口和自动存储功能。
|
4月前
|
存储 人工智能 编译器
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
140 10
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
3月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
7月前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
562 1
|
10月前
|
测试技术 Linux Android开发
i2c总线及设备测试工具i2ctools:i2cdetect、i2cdump、i2cget、i2cset
本文介绍了i2ctools工具集的使用,包括i2cdetect、i2cdump、i2cget和i2cset,这些工具有助于I2C设备的开发和调试,通过检测设备、读写寄存器和数据块来提高开发效率。
1875 1
|
10月前
|
Android开发
基于Amlogic 安卓9.0, 驱动简说(四):Platform平台驱动,驱动与设备的分离
本文介绍了如何在基于Amlogic T972的Android 9.0系统上使用Platform平台驱动框架和设备树(DTS),实现设备与驱动的分离,并通过静态枚举在设备树中描述设备,自动触发驱动程序的加载和设备创建。
215 0
基于Amlogic 安卓9.0, 驱动简说(四):Platform平台驱动,驱动与设备的分离