
第1章 Android体系结构及开发环境
1.1 Android体系结构介绍
Android是Google公司为移动设备开发的平台,它是一款开放的软件系统,其系统体系结构如图1-1所示,自上而下分为以下几个层次。

图1-1 Android系统体系结构
·应用程序(Application)
·应用程序框架(Application Framework)
·函数库(Libraries)和Android运行时(Android Runtime)
·Linux内核(Linux Kernel)
Android的内核系统服务依赖于Linux2.6内核,随着Android发布版本的升级,Android系统使用的Linux内核也在不断升级,下面仅列举到Android 2.3版本。与Android系统对应的内核及其版本如下:
Android
Android 1.0
Android 1.5(Cupcake)
Android 1.6(Donut)
Android 2.1(Eclair)
Android 2.2(Froyo)
Android 2.3(GingerBread)
系统版本内核版本
Linux 2.6.25
Linux 2.6.27
Linux 2.6.29
Linux 2.6.29
Linux 2.6.32
Linux 2.6.35
在本节中将对每一层次进行简单说明。
1.1.1 应用程序
Android应用程序是基于Java语言编写的,为使用者提供操作接口。使用者直接操作应用程序,实现一定的功能。目前Android系统提供了计算器、联系人(Contacts)、电话(Phone)、浏览器(Browser)、E-mail客户端、SMS短消息程序、日历、地图等内核应用程序,开发者还可以使用Android提供的组件编写满足特定功能的应用程序。
由用户开发的Android应用程序和Android内核应用程序是同一层次的,它们都是基于Android系统的API构建的。
1.1.2 应用程序框架
开发人员可以访问内核应用程序所使用的API框架。应用程序体系结构设计简化了组件的重用,任何一个应用程序都可以发布其功能块,并且任何其他的应用程序都可以使用应用程序体系结构所发布的功能块(不过要遵循框架的安全性限制)。同样,应用程序重用机制也使使用者可以方便地替换程序组件。隐藏在每个应用后面的是一系列的系统服务,这些系统服务包括:
·丰富且可扩展的视图(View System),可以用来构建应用程序,这些视图包括列表(List)、网格(Grid)、文本块(Text Box)、按钮(Button),甚至可嵌入Web浏览器。
·内容提供器(Content Provider)使应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。
·资源管理器(Resource Manager)提供非程序代码资源的访问,如本地字符串、图形和布局文件(Layout File)。
·通知管理器(Notification Manager)使得应用程序可以在状态列中显示自定义的提示信息。
·活动管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能。
·窗口管理器(Window Manager)管理所有窗口程序。
·包管理器(Package Manager)管理Android系统内的程序。
·通信管理器(Telephony Manager)管理Android系统的通信功能。
·定位管理器(Location Manager)提供Android系统的定位等相关服务。
1.1.3 函数库
Android包含一些C/C++函数库,这些函数库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。这些内核函数库包括:
·libc:标准C系统函数库,它是专门为基于Embedded Linux的设备定制的。
·Media Framework:基于PacketVideo OpenCORE,该函数库支持多种常用的音效、视频格式回放和录制,同时支持静态影像文件。编码格式包括MPEG4、H.264、MP3、AAC、AMR、JPG以及PNG。
·Surface Manager:显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。
·Webkit:提供Web浏览引擎的支持。
·SGL:底层的2D图形引擎。
·OpenGL ES:基于OpenGL ES 1.0 APIs实现,该函数库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。
·FreeType:位图(bitmap)和向量(vector)字体显示。
·SQLite:一个对于所有应用程序可用、功能强大的轻量级关系型数据库引擎。
·SSL:安全套接层(Secure Sockets Layer)是为网络通信提供安全及数据完整性的一种安全协议。
1.1.4 Linux内核
Android的内核系统服务如安全管理、内存管理、进程管理、网络通信和驱动模型依赖于Linux 2.6内核,Linux内核也同时作为硬件和软件堆栈之间的抽象层。关于Android对Linux内核的修改,这里重点阐述以下两个:
·Binder(IPC)Driver:提供高效率的进程间通信(Inter-Process Communication)。Android系统中有很多服务,上层的应用程序经常要取用这些服务。虽然一般的Linux系统已经提供了很多IPC的方式,但是Android几乎重新制作了一套自己的IPC。Android文件中解释说,一般IPC会造成额外资源花费以及安全问题。
·Power Management:与台式计算机或笔记本电脑不同,手持设备的电源一向相当有限,必须想尽一切办法省电,而又不能影响顺畅的使用体验。Android在此采取了颇为积极的做法:如果不使用,就关掉。例如,某程序在播放MP3音乐,于是此程序需要CPU的计算能力,那系统就得提供。如果与此同时没有执行其他程序,那么LCD显示器就可能被关闭,以便省电。一般的Linux内核考虑的都是在计算机上的做法,所以多数只有进入暂停、休眠等选择,而不会如此细致地控制各个小装置的电源供应。
以上详细介绍了Android体系结构情况,读者可以了解了Android体系结构的基本情况,为开发Android应用程序打下基础。在开发Android应用程序之前首先需要搭建开发的环境,下面将介绍Android应用程序开发环境是如何搭建的。