想到做到:Android开发关键技术与精彩案例
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

入门篇

第1章 开放的Android

1.1 Android的历史

目前,如果说有一个操作系统能够与苹果公司的iOS平分秋色,引领智能终端发展的话,那么,这个操作系统一定是Google的Android。自2007年11月到现在,Android平台快速发展,从Android 1.0版本演进到最新的Android 4.0,系统的稳定性和用户体验都有了很大的提升。与此同时,市场上Android设备的出货量增长速度更是惊人,每天激活的Android设备甚至超过50万台,这太不可思议了,但是Android确实做到了。现在很多开发商都在追捧Android,他们希望自己开发的游戏或者应用可以被众多Android用户使用,同时为公司创造财富。

↘ 1.1.1 Google收购Android

事实上,Android是由Andy Rubin、Rich Miner等人在2003年11月创建的,当时公司设在加利福尼亚州帕洛阿尔托。尽管创始人Andy Rubin等人之前已经在业界小有名气,但是Android公司的行事却非常低调,他们传递给外界的信息是,Android是一家从事手机软件开发的公司,仅此而已。

2005年8月,Google收购了Android公司,Android成为Google的全资子公司,公司的创始人Andy Rubin、Rich Miner,以及核心员工都留在了Google,继续从事Android的开发工作。收购完成之后,业界已经在猜测,Google想通过此次收购进入移动电话市场。历史证明,收购Android是Google最成功的一次交易。

在Google,Andy Rubin带领他的团队继续开发基于Linux内核的智能终端操作系统。同时,Google与业界的硬件厂商、软件开发商等展开一系列的合作,目的是将Android作为一个稳定的、用户体验出色的操作系统提供给手机制造商和运营商。2006年,BBC就曾经报道说,Google希望借助Android将其搜索和应用程序延伸到手机上,揭示了这个搜索巨头进军移动互联网的野心。之后,谣言四起,有人说Google正在秘密研制自己的手机,有人说Google正在制定技术规范。

↘ 1.1.2 Open Handset Alliance

2007年11月5日,Android终于从幕后走向前台,Google联合高通、HTC、Intel、Motorola、T-Mobile等发起了Open Handset Alliance(OHA)联盟,OHA的使命是制定移动设备的开放标准。同一天,OHA发布了第一个项目,就是基于Linux内核的智能终端软件平台Android。后来,ARM、Sony Ericsson等公司陆续加入OHA,参与到Android的研发工作中,加速了Android的发展和市场化进程。

Android是开源的,由Google领导开发和维护。Google会定期向开源社区发布Android的源代码,以便任何公司可以使用Android制造移动终端设备。Android的目标就是提供一个稳定的智能终端平台,提升用户体验。为了避免设备分裂,Google同时负责Android Compatibility Program(ACP),ACP确保使用Android SDK和NDK开发的应用程序可以在所有的Android设备运行,减小软件开发商移植的成本。Android兼容性测试可以通过Google提供的Compatibility Test Suite完成,Google不强制手机厂商做CTS测试,即便做CTS测试也是免费的。

↘ 1.1.3 Android版本演进

截至2011年11月,Android在全球智能手机市场的份额达到了52%,超过了Nokia的Symbian操作系统,让我们一起回顾一下Android版本演进的过程。

2007年11月,Google发布了Android 1.0 beta版和Android SDK。但是,第一个商业Android版本是在2008年9月份发布的,HTC发布了G1——第一款搭载Android系统的手机,如图1-1所示。

图1-1 HTC G1

2009年4月,Google发布了Android 1.5,基于Linux内核2.6.27。在这个版本中,Google引入了Widgets的概念,并支持MPEG-4和3GP多媒体格式。

2009年9月,Google发布了Android 1.6,基于Linux内核2.6.29。相比Android之前的版本,Google主要优化了搜索方面的体验,支持了WVGA分辨率。

2009年11月,Google发布了Android 2.0,同样基于Linux内核2.6.29,距离发布Android 1.6版本只有两个月的时间。可以看出Google一直以一种快速迭代的方式不断修正Android的bug,提升稳定性,增加系统功能。Android 2.0支持了动态壁纸、蓝牙2.1等新功能。

2010年1月,Google发布了Android 2.1,这个版本只是对上一版本的优化和升级修复了一些bug。

2010年5月,Google发布了Android 2.2,基于Linux内核2.6.32。Google在Android 2.2中引入了很多新的技术,大幅提升了系统的性能,其中包括集成了Chrome的V8 JavaScript引擎,使用JIT技术提升应用程序的执行速度,以及支持Adobe Flash等。

2010年12月,Google发布了Android 2.3,基于Linux内核2.6.35。Google在Android 2.3中更新了用户界面接口设计,用于减少操作步骤,提升用户体验。值得一提的是,SIP VOIP和NFC在这个版本得到了支持。

2011年2月,Google发布了Android 3.0,基于Linux内核2.6.36。Android 3.0是为平板电脑设计的,Motorola在同年2月份,发布了基于Android 3.0的平板电脑Xoom。

2011年5月,Google在I/O大会上展示了Android 4.0版本,并在11月份正式对外发布了Android 4.0。Android 4.0是手机和平板电脑融合的展品,拥有10大重点新特性,包括更新Linux内核到3.0版本,支持Google TV,以及全新的UI人性化体验界面等。

1.2 Android的架构

Android由底层操作系统、本地系统库、Android运行环境、应用程序框架和应用程序等部分组成。Android平台结构图如图1-2所示,本节介绍Android架构的主要部分,帮助开发者了解Android的体系结构。

图1-2 Android结构图

↘ 1.2.1 Linux内核

Android最早的版本基于Linux 2.6版内核,最新的Android 4.0基于Linux 3.0版内核。内核为上层系统提供了安全、内存管理、线程管理、网络协议栈和驱动模型等系统服务。同时,内核还提供了一套抽象层接口,在向下的硬件层和向上的软件层之间架起桥梁。

↘ 1.2.2 本地库

Android强大的功能来源于底层的本地库,这些本地库通过上层的应用程序框架将编程接口提供给开发者调用,本地库和应用程序框架通过JNI(Java Native Interface)连接。以多媒体编程接口为例,应用程序框架层的MediaPlayer对象通过JNI调用使用C/C++实现的MediaPlayer类,MediaPlayer使用系统提供的接口向上提供服务。调用关系如图1-3所示。

图1-3 多媒体编程调用关系

下面列出了Android包含的核心本地库。

标准C系统库——针对嵌入式Linux设备优化的标准C系统库。

多媒体库——基于PacketVideo的OpenCORE引擎,支持多种音频/视频格式的播放和录制,以及静态图片文件的显示。目前支持MPEG4、H.264、MP3、AAC、AMR、JPEG、PNG和GIF等格式。

SGL——面向嵌入式终端设备的2D图形引擎,在较低的硬件要求下即可提供高质量的图形效果。SGL引擎基于C设计,代码共计8万多行,目前已经开源。

3D库——实现了OpenGL ES 1.0 API,使用3D库可以开发出丰富的界面效果。

SQLite——轻量级的关系型数据库引擎,增强了Android的数据存储能力,尤其是存储的数据结构较复杂时。

Webkit——提供一个浏览器引擎,服务于Android的浏览器应用程序和WebView组件。

FreeType——服务于位图和矢量字体的绘制。

↘ 1.2.3 Android运行环境

Android应用程序以apk文件形式发布,apk文件运行在Android运行环境之中,准确地说是在Dalvik虚拟机内运行。Dalvik虚拟机与普通的Java虚拟机不同,它针对嵌入式设备进行了优化,class文件经过“dx”工具转换成.dex文件格式,.dex文件格式更为紧凑,执行效率更高。在Android的运行环境中还包含了Java核心类库,包括java.lang、java.io等包。

每个Android应用程序都运行在单独的虚拟机实例之上,这样可以保证应用程序之间不相互影响,即使一个程序崩溃,也不会影响其他程序,因此也不会导致整个系统不能正常运行。由于Dalvik虚拟机的设计可以高效地生成多个虚拟机实例,所以不用担心性能问题。关于Android的应用程序模型和运行环境将在第3章进行详细介绍。

↘ 1.2.4 应用程序框架

Android为应用程序提供了一个开放的运行环境,无论是内置应用程序,还是后续安装的应用程序,所有应用程序访问底层框架的能力是一致的,开发者可以使用应用程序框架提供的API开发自己的应用程序。下面简要介绍应用程序框架中包含的常用模块,更详细的介绍将在后续的章节中一一呈现:

丰富的图形用户界面组件,包括ListView、WebView、Button等。

用于在各个应用程序之间共享数据的Content Provider机制。

SQLite提供的相关数据库操作API。

资源管理器,管理应用程序的文本、图片、XML等资源。

管理应用程序生命周期的ActivityManager。

移动多媒体框架提供了音频/视频播放、音频录制、在线媒体播放等功能。

允许应用程序在后台运行的Service组件。

↘ 1.2.5 应用程序

在Android中内置了常用的核心应用程序,包括邮件客户端、电话、短消息、日历、浏览器和联系人等。用户也可以从Android Market等下载第三方的应用程序安装到手机上。图1-4是Android 2.3 SDK模拟器的Home和电话应用程序。

图1-4 Android 2.3 SDK模拟器的Home和电话应用程序

1.3 开发Android应用程序

↘ 1.3.1 开发语言

Android的应用程序使用Java语言编写,这大大降低了开发者的门槛。Java语言是世界上应用最为广泛的编程语言,其良好的面向对象特性、开发效率高等特点深受开发者的欢迎。如果应用程序对性能要求很高,开发者可以选择使用NDK将部分模块使用C/C++语言实现。

↘ 1.3.2 Android SDK

Android SDK包括了一系列的开发工具,以帮助开发者开发和调试应用程序。SDK的出现,大大提高了嵌入式应用程序开发的效率,通常开发者编写程序之后直接在模拟器上运行,调试完成后再将程序移植到真机上。Android SDK主要包含以下几部分:

Android应用程序框架的编程接口。

模拟器,包含了多种屏幕尺寸的模拟器,用于开发和调试。

开发过程中的辅助工具,比如ADB、AAPT、DX和DDMS等。

开发文档,包括API文档、开发指南等。开发者遇到问题,应该第一时间查看开发文档以便快速、准确地解决问题。

示例代码,供初学者学习使用。

Android SDK 2.3模拟器的界面如图1-5所示。关于如何搭建Android的开发环境,使用Android SDK提供的各种开发工具,将在第2章详细介绍。

图1-5 Android SDK 2.3模拟器的界面

1.4 Android Market的致富之路

↘ 1.4.1 Android Market的商业模式

Android Market(2012年3月,Google将其出售应用、视频、音乐、电子图书及其他数字产品的在线商店Android Market更名为Google Play Store)是一个由Google为Android系统用户创建的服务,允许安装了Android系统的手机和平板电脑用户从Android Market浏览和下载一些应用程序。用户可以购买或免费试用这些应用程序。Android Market在Google、终端厂商、手机用户、开发者(个人和企业)之间建立了一个生态系统,鼓励开发者为Android设备开发应用程序,开发者从中获得70%的收入,而Google获得30%的收入。

↘ 1.4.2 Android Market发布流程

为了帮助开发者尽快熟悉在Android Market发布Android应用程序的过程,本节重点介绍开发者与Android Market合作的流程。

1.Android Market注册

首先注册一个Gmail的账号,登录你的Gmail账号,然后单击进入https://market.android.com/publish,就开始注册Android Market,包括支付25美元。只是国内的开发者在注册的时候需要注意,目前Android Market暂时不支持国内开发者注册,所以你需要一个海外的账号和相关的信息。注册页面如图1-6所示。

图1-6 注册为Android Market开发人员

2.发布应用程序

(1)首先登录进入Android Market后台管理,单击右下角的“上传应用程序”按钮。

(2)进入新的页面后会让开发者先上传APK文件,选择APK,单击“上传”按钮即可,如图1-7所示。

图1-7 上传APK文件

(3)接下来按照要求完善应用程序的相关信息,如图1-8 所示,包括游戏的截图、图标、宣传图片、文字等。这里需要注意的是“宣传视频”,如果应用程序面向海外发行,则有必要上传宣传视频;如果面向国内发行,则可以不上传视频,毕竟国内用户可能无法访问YouTube。

图1-8 完善应用程序的信息

(4)发布选项中的内容分级时一定要小心,这里根据提交的游戏自行分类,如图1-9所示,但是Google也会定期检查所有的游戏是否符合内容的分级。如果你只有中文版的应用程序,那就不要选中“所有国家/地区”。

图1-9 内容分级

(5)当你完成所有项目的填写或者选择后,单击“发布”按钮即可发布你的游戏,大概30分钟左右你的游戏就会出现在Android Market里。

3.Android Market管理你的应用

(1)进入Android Market管理后台,可以查看你的应用列表,其中包括每个应用的评分、下载量和安装量,以及错误信息等,如图1-10所示。

图1-10 查看应用程序的数据信息

(2)单击“统计信息”按钮即可进入应用的统计,包括版本、下载量、安装量、用户的信息等。这些信息可以帮助开发者分析你的游戏趋势和用户的分布数据,如图1-11所示。

图1-11 应用程序的统计信息