《Android游戏编程入门经典》——4.4节对比模拟器和Android设备

简介:

本节书摘来自异步社区《Android游戏编程入门经典》一书中的第4章,第4.4节对比模拟器和Android设备,作者【美】Jonathan S. Harbour,更多章节内容可以访问云栖社区“异步社区”公众号查看

4.4 对比模拟器和Android设备
Android游戏编程入门经典
模拟器允许您在不同的Android操作系统上并以不同的屏幕分辨率测试程序,但是模拟器(之前称为Android虚拟设备或AVD)存在限制。即使在高端开发PC上,模拟器也很缓慢。现在,高端机器将拥有类似6核处理器(或者是服务器主板上有两个这样的处理器)和8GB或更多RAM的配置。AVD通常配有512MB或1GB的RAM。图4.19显示了AVD配置对话框,注意Hardware(硬件)列表底部的Device RAM Size(设备RAM大小)字段。顺便说一下,对于使用WSVGA模式(1024×600)的AVD来说,512MB的RAM是不够的。使用这种大小的RAM,模拟器将不稳定并弹出错误信息;使用高清分辨率时推荐使用1GB的内存。


e98e0a0857c53c9a56797ad70b47b964c46694fa

4.4.1 AVD限制
Android SDK文档建议:“构建移动应用程序时,最重要的一点是,在将移动应用程序发布给用户之前,始终在实际设备上测试它。”使用一段时间的模拟器之后,这样做的原因是不言而喻的。图4.20显示了模拟WSVGA(1024×600)设备(低分辨率的Android平板设备)的AVD。高清平板电脑屏幕是WXGA800(1280×800)。


c2894cada14c76ba3c34049a2c3ecd8ef01c087f

提示:

有趣的是,1280×800是320×200的倍数。320×200是一种非常老的MS-DOS视频游戏分辨率,20世纪90年代的游戏通常都使用该分辨率。
AVD有助于快速测试应用程序外观,但是对于长期应用程序或游戏开发来说却非常缓慢。简而言之,如果您未注意到这一现象,则长期使用它会让人十分沮丧。如果您是独立的开发人员,则一台Android设备就足以让您调试并测试代码了。如果您的项目资金充足,那么在几种目标设备上测试构建会非常有用。换句话说,AVD模拟器是一个只能提供有限支持的工具,并不是严肃开发的专用工具。

4.4.2 安装Android Debug Bridge Device Driver
要在物理Android设备上运行代码,需要安装名为Android Debug Bridge或ADB的设备驱动程序。此驱动程序不仅仅是一个USB设备驱动程序,将Android设备与系统连接起来时,它应该显示为一个通用内存设备,可以在这里浏览文件系统。特殊的ADB驱动程序支持系统在设备上调试代码。

警告:

通过USB将设备连接到系统会显示文件系统。这是一些Android用户能够获得访问其设备管理员权限的一种方式,这离使用新版本替换核心Android操作系统只有一步了。如果获取Android的root权限,通常会丢失制造商对软件更新的支持,并且可能无法访问Google Play(Android Market)系统。
可以从市场中选择多种Android设备进行开发。但是,要注意一些设备使用的Android操作系统版本,因为一些版本是无法升级的。可以获取大多数Android设备的root权限,但是这样做会无法访问制造商的更新支持,也可能无法访问Android Market(出售的应用程序、游戏和媒体)。获取root权限是有趣的体验,但是我喜欢使用未经修改的Android设备,因为这样更能反映最终用户玩游戏时的体验。

注意:

如果使用Mac OS X或Linux进行Android开发,请访问下列网页查找有关配置系统的说明:http://developer.android.com/guide/developing/device.html
首先,要在物理Android设备(而不是模拟器)上运行代码,必须在设备上启动USB调试。可以在Android设备的Settings(设置)中完成此操作。进入Settings(设置)、Developer(开发人员)选项。这会显示USB调试选项,如图4.21所示。这样做时,开发系统应选择新设备并尝试安装驱动程序。

通常,在PC端,驱动程序安装将失败,因此您需要下载一个工作的驱动程序。访问下列网页以下载USB调试设备驱动程序:http://developer.android.com/sdk/oem-usb.html。下面是在Windows 7下安装USB驱动程序进行调试的步骤。


ae5c104c4e86e7256935567d234088cdd19d766e

Try It Yourself

1.使用USB连接线将Android设备连接到PC。

2.右键单击桌面上的Computer(计算机)并选择Manage(管理)命令。

3.在左侧窗格中选择Device Manager。

4.在右侧窗格中找到Other Devices(其他设备)并展开它。

5.右键单击设备名称,比如AT1SO(东芝)或Nexus S(三星),并选择Update Driver Software(更新驱动程序软件),如图4.22所示。


72530422f363045cce0f381a7f5a639fb1107115

6.这将显示Update Driver Software(更新驱动程序软件)对话框。

7.选择Browse my computer for driver software(浏览我的电脑寻找驱动程序软件)并单击Next(下一步)。

8.单击Browse(浏览)并找到USB driver文件夹。Google USB Driver位于extrasgoogleusb_driver。在这里,根据需要选择amd64或i386。

9.单击OK(确定),然后单击Next(下一步)安装驱动程序。
如果这些步骤失败了,您将会想为特定Android设备找到USB ADB驱动程序,而Google搜索可能会有所帮助。完成设备驱动程序安装后,在Device Manager中将显示Android设备,如图4.23所示。


6d99d32cb35dcc3c06b290214491fcb24383ae7f

4.4.3 在Android设备上运行代码
将Android设备连接到开发系统后,可以在ADB上运行代码。我们将使用在本章前面创建的示例。

要在Android设备上运行程序,则该程序必须使用同一版本的Android操作系统进行构建。一些设备支持Android 4.0或4.1,而一些设备则不支持它们。一些设备可以升级,而另一些设备则无法升级。本书中所示的大多数游戏代码都可以在旧Android操作系统设备上运行,因此没有必要一定要创建针对SDK 4(ICS或Jelly Bean或更高版本)的项目。为了最大化销售潜力,可能无论何时都需要支持旧设备。尽管自3.2以来已经改进了操作系统功能,但我们关心的针对视频游戏的核心SDK功能还没有明显变化。因此,您应该能够支持3.2、4.0、4.1或更高的版本,但支持3.2之前的版本可能不太现实。

对于本章中的示例,我有一台运行操作系统4.0.4的东芝Thrive 7英寸平板电脑。如果回头查阅第1章及其名为“Android平台的历史”的部分,您会发现此版本名为Ice Cream Sandwich(冰淇淋三明治)。之前的版本被称为Honeycomb(蜂巢)。支持这些旧操作系统是一种好主意!幸运的是,较大的Android设备制造商目前正在一致地发布旧型号的更新。例如,尽管用于测试本书示例的东芝Thrive最初随附提供了3.2 Honeycomb,但是已经使用东芝更新将它更新到了4.0 Ice Cream Sandwich。

非常流行的Amazon Kindle Fire运行Android 2.1 Eclair。对于在2011年第四季度发布的设备来说,该系统已经过时了。但是,Amazon已经出售了数百万的Kindle Fire设备,并且对您的游戏来说,他们是数百万的潜在客户。为了显示该平台的迅速发展程度,较新的Kindle Fire HD已经随附提供了4.0 ICS—此时距离第一款Kindle Fire上市还不到一年的时间。由于此快速发展,开发人员倾向于使用代号而不是版本号(Honeycomb、Ice Cream Sandwich等)。

让我们开始在运行4.0 ICS的东芝Thrive上运行此Hello, Android!示例吧。要在Eclipse中更改项目的目标版本,在Package Explorer(包资源管理器)中右键单击项目名称,并选择Properties(属性)命令。这将显示如图4.24所示的对话框。


43169546523f49907466543b8a7e6f0a98ce4823

从左侧的属性组列表中选择Android选项以显示Android选项。在这里可看到3.2 Honeycomb和4.0 Ice Cream Sandwich。如果想将其他设备作为目标,则可以安装这两个和更多的系统。如果代码使用新操作系统版本中的新功能,要做好修改代码以便在旧版本上编译它们的准备。幸运的是,在编写本书时,Android才上市不到3年的时间,因此兼容性不是一个大问题。

提示:

如果想以多个Android版本为目标(这是一个好想法),则可以使用Android SDK Manager下载其他SDK版本,以便将每个版本作为目标。
假设已经将项目配置为使用匹配目标设备操作系统的SDK构建,则可以在该设备上运行此项目。Eclipse中的Run(运行)命令显示了如图4.25所示的Android Device Chooser(Android设备选择器)对话框。如果遇到了API级别的错误,可以在清单文件(AndroidManifest.xml)中更改API级别。


47188b09af82214866f721081a03431c5c2373be

注意:

如果想要从Android设备获得屏幕截图,查看Android SDK安装文件夹(在Windows系统上通常为C:Program Filesandroidandroid-sdk),寻找名为tools的文件夹,其中有一个名为Dalvik Debug Monitor的程序。可通过运行ddms.bat批文件启动它。使用Device(设备)菜单或按住Ctrl+S组合键进行屏幕截图。或者是在Eclipse中,使用DDMS Perspective(DDMS透视图)命令访问该设备。

相关文章
|
5月前
|
Android开发 iOS开发 UED
探索未来:Android与iOS在智能穿戴设备上的较量
随着科技的飞速进步,智能穿戴设备已经成为我们日常生活中不可或缺的一部分。本文将深入探讨两大操作系统——Android和iOS——在智能穿戴领域的竞争与发展,分析它们各自的优势与挑战,并预测未来的发展趋势。通过比较两者在设计哲学、生态系统、用户体验及创新技术的应用等方面的差异,揭示这场较量对消费者选择和市场格局的影响。 【7月更文挑战第31天】
55 0
|
4月前
|
Shell Linux 开发工具
"开发者的救星:揭秘如何用adb神器征服Android设备,开启高效调试之旅!"
【8月更文挑战第20天】Android Debug Bridge (adb) 是 Android 开发者必备工具,用于实现计算机与 Android 设备间通讯,执行调试及命令操作。adb 提供了丰富的命令行接口,覆盖从基础设备管理到复杂系统操作的需求。本文详细介绍 adb 的安装配置流程,并列举实用命令示例,包括设备连接管理、应用安装调试、文件系统访问等基础功能,以及端口转发、日志查看等高级技巧。此外,还提供了常见问题的故障排除指南,帮助开发者快速解决问题。掌握 adb 将极大提升 Android 开发效率,助力项目顺利推进。
106 0
|
2月前
|
网络协议 Shell 网络安全
解决两个 Android 模拟器之间无法网络通信的问题
让同一个 PC 上运行的两个 Android 模拟器之间能相互通信,出(qiong)差(ren)的智慧。
29 3
|
4月前
|
Android开发
基于Amlogic 安卓9.0, 驱动简说(四):Platform平台驱动,驱动与设备的分离
本文介绍了如何在基于Amlogic T972的Android 9.0系统上使用Platform平台驱动框架和设备树(DTS),实现设备与驱动的分离,并通过静态枚举在设备树中描述设备,自动触发驱动程序的加载和设备创建。
73 0
基于Amlogic 安卓9.0, 驱动简说(四):Platform平台驱动,驱动与设备的分离
|
4月前
|
Android开发 C语言
基于Amlogic 安卓9.0, 驱动简说(二):字符设备驱动,自动创建设备
这篇文章是关于如何在基于Amlogic T972的Android 9.0系统上,通过自动分配设备号和自动创建设备节点文件的方式,开发字符设备驱动程序的教程。
71 0
基于Amlogic 安卓9.0, 驱动简说(二):字符设备驱动,自动创建设备
|
4月前
|
自然语言处理 Shell Linux
基于Amlogic 安卓9.0, 驱动简说(一):字符设备驱动,手动创建设备
本文是关于在Amlogic安卓9.0平台上创建字符设备驱动的教程,详细介绍了驱动程序的编写、编译、部署和测试过程,并提供了完整的源码和应用层调用示例。
105 0
基于Amlogic 安卓9.0, 驱动简说(一):字符设备驱动,手动创建设备
|
4月前
|
传感器 Android开发 芯片
不写一行代码(三):实现安卓基于i2c bus的Slaver设备驱动
本文是系列文章的第三篇,展示了如何在Android系统中利用现有的i2c bus驱动,通过编写设备树节点和应用层的控制代码,实现对基于i2c bus的Slaver设备(如六轴陀螺仪模块QMI8658C)的控制,而无需编写设备驱动代码。
56 0
不写一行代码(三):实现安卓基于i2c bus的Slaver设备驱动
|
4月前
|
Android开发
不写一行代码(二):实现安卓基于PWM的LED设备驱动
本文介绍了在Android系统中不编写任何代码,通过设备树配置和内核支持的通用PWM LED驱动来实现基于PWM的LED设备驱动,并通过测试命令调整LED亮度级别。
54 0
不写一行代码(二):实现安卓基于PWM的LED设备驱动
|
4月前
|
Linux Android开发 C语言
不写一行代码(一):实现安卓基于GPIO的LED设备驱动
本文通过实践操作,展示了在Android系统中不编写任何代码,利用设备树(DTS)配置和内核支持的通用GPIO LED驱动来控制LED设备,并进一步通过C语言编写NDK测试APP来实现LED的闪烁效果。
177 0
不写一行代码(一):实现安卓基于GPIO的LED设备驱动
|
4月前
|
存储 Ubuntu API
如何使用Python创建服务器向Android设备发送GCM推送通知
如何使用Python创建服务器向Android设备发送GCM推送通知
31 0