《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

相关文章
|
10天前
|
存储 Java Android开发
探索安卓应用开发:构建你的第一个"Hello World"应用
【9月更文挑战第24天】在本文中,我们将踏上一段激动人心的旅程,深入安卓应用开发的奥秘。通过一个简单而经典的“Hello World”项目,我们将解锁安卓应用开发的基础概念和步骤。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供一次实操体验。从搭建开发环境到运行你的应用,每一步都清晰易懂,确保你能顺利地迈出安卓开发的第一步。让我们开始吧,探索如何将一行简单的代码转变为一个功能齐全的安卓应用!
|
10天前
|
数据采集 人工智能 安全
软件测试中的人工智能应用与挑战
在这篇文章中,我们将深入探讨人工智能(AI)在软件测试中的应用及其所面临的挑战。通过分析当前的技术趋势和具体案例,揭示AI如何提高测试效率和准确性,并指出在实施过程中遇到的主要问题及可能的解决途径。
25 1
|
6天前
|
测试技术
探索软件测试的奥秘:从基础理论到实践应用
【9月更文挑战第28天】在数字化时代,软件已成为我们生活中不可或缺的一部分。然而,随着软件复杂性的增加,确保其质量和可靠性变得日益重要。本文将带你深入了解软件测试的核心概念、方法论以及如何在实际工作中运用这些知识来提升软件质量。无论你是软件测试新手还是希望深化理解,这篇文章都将为你提供宝贵的洞见和实用技巧。
|
5天前
|
监控 安全 Java
Kotlin 在公司上网监控中的安卓开发应用
在数字化办公环境中,公司对员工上网行为的监控日益重要。Kotlin 作为一种基于 JVM 的编程语言,具备简洁、安全、高效的特性,已成为安卓开发的首选语言之一。通过网络请求拦截,Kotlin 可实现网址监控、访问时间记录等功能,满足公司上网监控需求。其简洁性有助于快速构建强大的监控应用,并便于后续维护与扩展。因此,Kotlin 在安卓上网监控应用开发中展现出广阔前景。
9 1
|
8天前
|
敏捷开发 Java 测试技术
自动化测试框架的选择与应用
【9月更文挑战第26天】在软件开发的海洋里,自动化测试是那一盏指路明灯。它不仅加快了开发周期,还提升了软件质量。本文将带你探索自动化测试框架的世界,了解它们的核心特性、适用场景及如何根据项目需求做出明智选择。让我们一起启航,找到那把打开高效、稳定软件生产大门的钥匙。
|
6天前
|
数据采集 人工智能 自然语言处理
软件测试中的人工智能应用与挑战
本文探讨了人工智能在软件测试中的应用及其所面临的挑战。通过分析AI技术如何优化测试流程、提高测试效率以及目前存在的局限性,文章提供了对软件测试未来发展趋势的深入思考。
|
9天前
|
机器学习/深度学习 人工智能 监控
软件测试中的人工智能应用与挑战
随着科技的迅猛发展,人工智能(AI)在软件测试中的应用越来越广泛。本文将探讨AI在软件测试中的具体应用场景、带来的优势以及所面临的挑战,旨在为软件开发和测试人员提供有价值的参考。
|
10天前
|
测试技术 持续交付 UED
软件测试的艺术与科学:平衡创新与质量的探索在软件开发的波澜壮阔中,软件测试如同灯塔,指引着产品质量的方向。本文旨在深入探讨软件测试的核心价值,通过分析其在现代软件工程中的应用,揭示其背后的艺术性与科学性,并探讨如何在追求技术创新的同时确保产品的高质量标准。
软件测试不仅仅是技术活动,它融合了创造力和方法论,是软件开发过程中不可或缺的一环。本文首先概述了软件测试的重要性及其在项目生命周期中的角色,随后详细讨论了测试用例设计的创新方法、自动化测试的策略与挑战,以及如何通过持续集成/持续部署(CI/CD)流程优化产品质量。最后,文章强调了团队间沟通在确保测试有效性中的关键作用,并通过案例分析展示了这些原则在实践中的应用。
27 1
|
7天前
|
IDE Android开发 iOS开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
【9月更文挑战第27天】在移动应用开发的世界中,Android和iOS是两个主要的操作系统平台。每个系统都有其独特的开发环境、工具和用户群体。本文将深入探讨这两个平台的关键差异点,并分析这些差异如何影响应用的性能、用户体验和最终的市场表现。通过对比分析,我们将揭示选择正确的开发平台对于确保项目成功的重要作用。
|
20天前
|
Android开发 开发者 Kotlin
探索安卓开发中的新特性
【9月更文挑战第14天】本文将引导你深入理解安卓开发领域的一些最新特性,并为你提供实用的代码示例。无论你是初学者还是经验丰富的开发者,这篇文章都会给你带来新的启示和灵感。让我们一起探索吧!
下一篇
无影云桌面