1.2 Android操作系统的体系架构

Android操作系统的体系架构包含4个层次,如图1.1所示。

图1.1 Android操作系统的体系架构

由图1.1可以看出,Android操作系统的体系架构由上到下依次为应用程序、应用程序框架、系统库和Android运行时、Linux内核等4个层次,下面分别进行介绍。

1.应用程序

在应用程序层,提供一系列的核心应用程序,例如电子邮件客户端、浏览器、通讯录、日历、地图、SMS程序、联系人管理程序等,这些应用程序都是使用Java语言编写的。

用户可以用自己编写的应用程序来替换Android提供的应用程序,从而展示开发人员的才华并更具个性化。

2.应用程序框架

应用程序框架层提供Android平台基本的管理功能和组件重用机制,它是从事Android开发的基础。该层提供了大量的API供开发人员使用,使开发人员易于开发功能强大的应用程序。

应用框架包含以下组件:

(1)Activity Manager(活动管理器)。管理应用程序的生命周期,起控制器的作用。

(2)Windows Manager(窗口管理器)。管理所有窗口程序。

(3)Content Provider(内容提供器)。提供一种服务,使应用程序之间可以实现数据共享,即使一个程序可以访问另一个程序的数据。

(4)View System(视图系统)。一组丰富并可扩展的视图组件,用于构建应用程序,例如文本框(TextView)、编辑框(EditText)、图片按钮(ImageButton)、复选按钮(Checkbox)等。

(5)Package Manager(包管理器)。管理安装在Android系统内的应用程序。

(6)Telephony Manager(电话管理器)。管理电话相关功能。

(7)Resource Manager(资源管理器)。对非编码资源进行统一管理。

(8)Location Manager(定位管理器)。管理地图相关服务功能。

(9)Notification Manager(通知管理器)。将应用消息显示在状态栏中,给用户以提示或通知。

3.系统库和Android运行时

该层由系统库和Android运行时组成。

1)系统库

系统库包含一套C/C++库。系统库是应用程序框架的支撑,是连接应用程序框架层和Linux内核层的纽带,包含以下内容:

(1)Surface Manager。管理对显示子系统的访问,可对多个应用程序与2D、3D图形层提供无缝整合。

(2)Media Framework。Android系统多媒体库,支持播放和录制许多流行的音频和视频格式。

(3)SQLite。所有应用程序都可使用的、功能强大的轻量级关系数据库引擎。

(4)OpenGL ES。3D效果的支持。

(5)FreeType。位图和向量字体显示。

(6)WebKit。一个全新的Web浏览器引擎,支持Android浏览器和内嵌的Web视图。

(7)SGL。底层的2D图形引擎。

(8)SSL。为数据加密与安全传输提供支持。

(9)Libc。从BSD系统派生的标准C系统库,调整为适应嵌入式Linux设备。

2)Android运行时

Android Runtime为Android应用提供一个运行环境,包括核心库和Dalvik虚拟机。

(1)核心库

核心库提供了Java编程语言核心类库具有的大部分功能。

(2)Dalvik虚拟机

Dalvik虚拟机是经过优化的多实例虚拟机,基于寄存器实现,采用专用的“.dex”格式文件,该格式适合内存和处理器速度受限的系统。

每个Android应用程序都运行在单独的Dalvik虚拟机内,即每个Android应用程序都对应一个Dalvik进程。

Dalvik虚拟机适合在移动终端上使用,相对于PC或服务器上的虚拟机来说,Dalvik虚拟机能对内存高效使用,在低速CPU上表现出高性能,它有以下两个特点:

  • 基于寄存器实现。Dalvik虚拟机是基于寄存器的,而大多数虚拟机(例如JVM)是基于栈的。
  • 运行专有的.dex文件。通过DX工具将应用程序所有.class文件编译成.dex文件,专有的.dex文件减少了.class文件的冗余信息,并用DX工具对.dex文件进行优化,从而提高运行性能。

4.Linux内核

Android基于Linux 2.6内核,除了标准的Linux内核提供进程管理、内存管理、网络协议堆栈、驱动程序、安全机制等之外,Android系统还增加了Binder(IPC)驱动、Wi-Fi驱动、蓝牙驱动等驱动程序,为系统运行提供了基础性支持。

Linux内核部分是系统硬件和其他软件叠层之间的抽象层。