《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透视图)命令访问该设备。

相关文章
|
2月前
|
Android开发
如何用Airtest脚本无线连接Android设备?
如何用Airtest脚本无线连接Android设备?
|
3月前
|
Android开发 Python
Python封装ADB获取Android设备wifi地址的方法
Python封装ADB获取Android设备wifi地址的方法
61 0
|
5月前
|
安全 Android开发
夜神模拟器 安卓7.0 burp抓包 https流量
夜神模拟器 安卓7.0 burp抓包 https流量
161 0
|
4月前
|
Android开发
【Android App】蓝牙的设备配对、音频传输、点对点通信的讲解及实战(附源码和演示 超详细)
【Android App】蓝牙的设备配对、音频传输、点对点通信的讲解及实战(附源码和演示 超详细)
84 0
|
7月前
|
数据采集 前端开发 Android开发
Android平台RTMP推送或GB28181设备接入端如何实现采集audio音量放大?
我们在做Android平台RTMP推送和GB28181设备对接的时候,遇到这样的问题,有的设备,麦克风采集出来的audio,音量过高或过低,特别是有些设备,采集到的麦克风声音过低,导致播放端听不清前端采集的audio,这时候,就需要针对采集到的audio,做音量放大处理。
|
7月前
|
开发工具 Android开发
Android平台GB28181设备接入端语音广播技术探究和填坑指南
GB/T28181-2016官方规范和交互流程,我们不再赘述。
|
7月前
|
编解码 监控 API
Android平台GB28181设备接入侧音频采集推送示例
GB/T28181是广泛应用于视频监控行业的标准协议规范,可以在不同设备之间实现互联互通。今天我们主要探讨Android平台的Audio采集部分。
|
6月前
|
生物认证 开发工具 Android开发
安卓设备签到,还是用视觉智能平台人脸搜索1:N
安卓设备签到,还是用视觉智能平台人脸搜索1:N
155 2
|
6月前
|
存储 传感器 定位技术
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
64 0
|
5天前
|
编解码 人工智能 测试技术
安卓适配性策略:确保应用在不同设备上的兼容性
【4月更文挑战第13天】本文探讨了提升安卓应用兼容性的策略,包括理解平台碎片化、设计响应式UI(使用dp单位,考虑横竖屏)、利用Android SDK的兼容工具(支持库、资源限定符)、编写兼容性代码(运行时权限、设备特性检查)以及优化性能以适应低端设备。适配性是安卓开发的关键,通过这些方法可确保应用在多样化设备上提供一致体验。未来,自动化测试和AI将助力应对设备碎片化挑战。