在最新版的 Android 开发者手册:使用 Android SDK 构建应用(第 2 版)一书中,作者 Ronan Schwarz 、 Phil Dutson 、 James Steele 与 Nelson To 成功地向 Addison-Wesley 开发者书库系列添加了浓墨重彩的一笔。这本面向移动应用开发者的图书可以作为新手的权威指南。对于中级与专家级开发者来说,本书也将有助于他们增强自身的编程实践。
读者在学习如何编写自己的代码的同时还可以将书中的攻略、代码片段与用户界面布局快速应用到 Android 项目中以创建出自己的原始应用。
本书的一大特色就是指导读者如何使用 Android 基本的应用编程接口(API)来确保应用能够在各种碎片化的设备与不同的OS 版本上运行;回顾过去、立足现在、展望未来。作者还谈到了Android、 Linux 内核、 Java 框架与 Eclipse 集成开发环境之间的关系。
书中讲述了对 OS 做了怎样的修改使之能够在移动生态圈的舞台上大放异彩,移动设备具有更小的屏幕和有限的选项,并且在必要时需要使用私有的 Android 库。与 Swing 或 Timer 等 Java 库及 X Windows 或 GNU C 库等典型的 Linux 工具不同,他们并不适合于在 Android 上编码。
从书中的第 1 章开始,读者就将深入到这个世界上最为流行的移动 OS 的具体细节当中。书中谈到了构成操作系统的必要文件,如何确保易丢失的闪存的安全性,他们由 6 个镜像构成:
- Bootloader——在启动时开始装载启动镜像
- Boot 镜像——内核与 RAMDisk
- System 镜像——带有应用的 OS 平台
- Data 镜像——在不同的权限模式下保存用户数据
- Recovery 镜像——保存更新并重新构建文件
- Radio 镜像——保存 Radio 栈文件
作者建议开发者深入理解硬件与他们所编写的代码之间的关系。他们强调不仅要考虑现有的智能手机和平板之间在内存与处理能力、屏幕尺寸、分辨率、前后摄像头上差别的重要性,还要考虑到现在或是未来将会运行在 OS 上的全新设备类型,比如说智能手表、训练设备、医疗设备、汽车,甚至是游戏机等,建议开发者们要尽可能编写设备中立的代码。
作者强调了在设计应用时能够把握全局的重要性。这意味着开发者应该能够清晰地认识到完成后的应用是什么样子的。这 4 位作者将他们专业的建议与经验都浓缩到了这本手册中。
他们建议在创建 Android 应用时使用 Eclipse IDE 来保证最佳的效果。
下面是一段示例攻略:
活动与意图 这项操作的步骤与上一个攻略类似:
- 在 Eclipse 中,选择 File → New → Android Application Project。
- 填写项目名,比如说 SimpleFragmentExample。
- 填写应用名,比如说 Example of Basic Fragments。
- 填写包名,比如说 com.cookbook.simplefragments。
- 将最低限度的 SDK 设为 API Level 11 或是 Android Honeycomb。
低版本 API 能够使用 Fragments 的前提是机器上要安装好额外的支持库。 7. 在 Create Activity 界面上,选择 MasterDetailFlow 作为起始点。
8. 命名条目,比如说 fruits。
9. 按下 Finish 按钮完成示例项目的创建。探索该示例的任务就交给读者完成了,下面重点来谈谈 Fragments。Fragments 有自己的生命周期,它取决于宿主活动。由于在活动生命周期的任何时刻,我们都可以添加、显示、隐藏以及删除 Fragments,因此其存活周期要比其他组件短很多。类似于活动,Fragments 也有 onPause()、onResume()、onDestroy() 及 onCreate() 方法。 然而,值得注意的是 onCreate(Bundle) 是 Fragment 上所调用的第 2 个方法,第 1 个被调用的方法是 onAttach(Activity),它会发出现已连接到宿主活动的信号。这里可以调用活动的方法,然而系统并不保证活动已经完全完成了自身的初始化。只有在调用了 onActivityCreated() 方法后活动自身的 onCreate() 方法才会被调用。
假设 Fragments 可以在晚些时候实例化并被加到活动上来,那么我们就不应该依赖 onAttach() 中活动的状态。用来初始化视图并启动大多数任务的方法是 onCreateView(LayoutInflater, ViewGroup, Bundle)。如果 Fragment 是重新创建的,那么这里的 Bundle 类就是保存的实例状态。Fragments 还会使用 bundles 来序列化参数。Fragment 所需的每一种外部信息都可以通过调用 setArguments() 从宿主活动中获得,并且总是可以通过 getArguments() 调用在 Fragments 中读取。这样就可以将来自于活动起始意图的信息直接传递给显示的 Fragment。
应用最为重要的特性之一就是用户界面了。在 Android 开发者手册的第 5 章中,我们将会学习到一个基本的 UI 布局的 3 个关键元素:界面视图、界面触摸事件以及定义应用属性的按键。这包含了完整的资源目录,比如说用于动画的 res/animator/ 以及用于 XML 文件的 res/menu,它会选择菜单。
每个 UI 对象都有 3 个可定义的属性来改变 UI 的外观与性能,分别是对象尺寸、对象文本以及对象颜色。为了保持应用的一致性,读者将会学习到如何使用全局资源文件,它将有助于追踪每一个属性。
第 13 章针对的是想要通过 Google Play 的应用内购买来销售应用的开发者。为了使用应用内购买,你需要拥有一个 Google Play 账户来链接到开发者账户。你所需的一切都位于 Android SDK 的 SDK Manager 中的 Extras 中。
本书的作者有 4 位,有人可能会想这会不会造成图书风格的不一致。不会的,在如何为开源的 Android 移动操作系统编写应用的相关建议这个话题上,与既成事实的设备类型与 OS 版本的碎片化不同,各位作者所给出的建议都是一样的。大家在阅读本书时不会感到风格的不一致,各位作者的表达风格都是一样的。
Android 开发者手册:使用 Android SDK 构建应用(第 2 版)一书值得任何一位开发者拥有。阅读本书可以让你追赶上移动开发的潮流,在需要帮助时你总能从书中找到答案。
关于本书作者
Ronan ‘Zero’ Schwarz 是 OpenIntents 的联合创始人,这是一家专业的 Android 开发公司。Ronan 拥有 15 年的编程经验,涉足的领域非常广泛,如增强现实、Web、机器人、业务系统以及各种不同的编程语言,如 C、Java 和汇编等。Ronan 从 2007 年开始就从事 Android 平台开发了,并且创建了 SplashPlay 与 Droidspray,在两次 Google Android 开发者挑战赛中他都是顶级选手。他目前在德国柏林的 SinnerSchrader Mobile 工作,是一名咨询师。Ronan 经常在欧洲的各大会议上发表演讲,是一位杰出的 Android 开发者。
Phil Dutson 是 ICON Health and Fitness 的前端与移动主开发者。他曾为 NordicTrack、ProForm、Freemotion、Sears、Costco 及 Sam’s Club 等公司开发过项目并设计解决方案。在过去的几年中,他曾为各种移动设备编写过程序,从第一个 Palm Pilot 5000 到现在的 iOS 与 Android。Phil 是 jQuery, JQuery UI, and jQuery Mobile、Sams Teach Yourself jQuery Mobile in 24 hours 以及 Creating QR and Tag Codes3 本图书的作者。
James Steele 经常参加硅谷 Android 与新技术小组。他目前就职于 Sensor Platforms,专注于提升用户手势与上下文信息的价值,同时向开发者屏蔽掉传感器硬件的复杂性和物理特性。在加入 Sensor Platforms 前,Steele 博士在 Spansion、Polaris Wireless 与 ArrayComm 担任高级管理职位,同时还在麻省理工学院与俄亥俄州立大学从事理论与粒子物理的研究工作。他于纽约州立大学斯托尼布鲁克分校获得理论物理博士学位。
Nelson To 拥有多年的 Android 研究与开发经验。他对探索创新理念并通过 Android 应用实现其想法拥有巨大的热情。他曾开发过多款 Android 应用,包括 AOL AIM Android 应用、为 Logitech Revue Box 开发过 Google TV 上首款高清视频聊天 Android 应用(Vid)。他还在本地社区教授 Android 课程以帮助人们更加高效地学习 Android,同时还投身于 Android 社区,为本地社区组织 Android 会议。
查看英文原文: Book Review: Building Applications with the Android SDK, 2nd Edition
评论