1.7 Android的系统架构

从软件分层的角度看,Android平台由应用程序、应用程序框架、Android运行时、系统库以及Linux内核构成,如图1-20所示。

图1-20 Android系统框架

通过图1-20,读者能够大致了解Android的系统框架,下面就对其进行一一讲解。

(1)Android应用程序框架

该框架是进行Android开发的基础,开发人员的大部分时间也是在这一层进行的,应用程序框架包含了视图系统、活动管理器、通知管理器、内容提供者、窗口管理器、位置管理器、资源管理器、电话管理器和包管理器共9大部分,如图1-21所示。

图1-21 应用程序框架

应用程序框架的各部分具体功能如下所列。

● 活动管理器(Activity Manager):管理所有的应用程序生命周期,以及通常的导航返回栈。

● 窗口管理器(Window Manager):管理所有的窗口程序。

● 内容提供者(Content Provider):用来让应用程序之间互相存取/分享数据。例如,某个应用程序可以存取联系人应用程序内的联系人数据。

● 视图系统(View System):用来构建应用程序的基本组件,包含列表、网格、文本框和按钮等。

● 包管理器(Package Manager):用来进行Android系统内的程序管理。

● 电话管理器(Telephone Manager):用来管理所有的移动设备的功能。

● 位置管理器(Location Manager):用来提供位置服务。

● 资源管理器(Resource Manager):提供各种资源让应用程序去使用,如本地化字符串、图片、布局文件。

● 通知管理器(Notification Manager):是应用程序可以在状态栏应用程序中显示警告信息。状态栏通常在手机的顶部,如短信、语音邮件提示就会在这里出现。

提示:Android平台的应用程序平等和应用程序无界限等特性就是由应用程序框架来保证的。

(2)Android运行时

Android运行时包括核心库和Dalvik虚拟机两部分,如图1-22所示,接下来将一一介绍这两部分。

图1-22 Android运行时

核心库:包括两大部分,一部分由Java所需调用的功能函数组成,另一部分由Android的核心库如android.os、android.net、android.media等组成。

提示:与传统的Java程序不同的是,每一个Android应用程序都有一个自有的进程,每一个Android应用程序都是由一个自有的Dalvik虚拟机来执行的。

Dalvik虚拟机:是一种基于寄存器的Java虚拟机,其依靠转换工具dx将Java字节码转换为dex格式(称为.dex)。基于寄存器的虚拟机相对于基于栈的虚拟机的优点是,其所需资源相对较少,而且硬件实现虚拟机也会比较容易。

(3)系统库

应用程序框架是贴近于应用程序的软件组件服务,而更底层则是Android的函数库,这一部分是应用程序框架的支撑,其架构如图1-23所示。架构中各部分的具体功能如下所列。

图1-23 系统库

● 媒体函数库:是以Packet Video公司的OpenCORE为基础所发展而成的,使用这个函数库在播放、录制多种常见的影音格式时,非常方便。

● SurfaceManager:负责合成2D与3D绘图之间软件的合成。

● WebKit:这是一套网页浏览器的软件引擎。WebKit可以为Android内部自带的浏览器所调用,WebKit是一个开源项目,许多浏览器也都是用WebKit引擎开发的,如Apple的Safari、Nokia s60手机的浏览器等。

● SGL:提供Android在2D绘图方面的绘图引擎。

● OpenGLES:Android是依据OpenGL ES1.0API标准来实现的3D绘图函数库,该函数库可以用软件方式执行也可以用硬件加速方式执行,其中3D软件在光栅处理方面进行了高度优化。

● FreeType:该库提供位图、向量字的绘图显示。

● 媒体框架:提供了对各种音频、视频的支持。Android支持多种音频、视频、静态图像格式。

● SQLite:这是一套轻量级的数据库引擎,支持关系数据库的事务等。

● Libc:提供了一套C库。

(4)Linux内核

采用Linux内核(如图1-24所示)是Android平台开放性的基础。Android平台中的操作系统采用了Linux 2.6版的内核,它包括了显示驱动、摄像头驱动、Flash内存驱动、Binder(ipc)驱动、键盘驱动、Wifi驱动、Audio驱动及电源管理驱动。

图1-24 Linux内核

Linux内核层是软件与硬件之间的桥梁,软件开发者不必关心内核的底层实现,而只需将精力全部投入到上层软件的开发中。而底层的工作都由Google和手机开发商来完成,如驱动的更新、新硬件驱动的编写等。