Android是基于Linux内核的软件平台,它的体系架构和其他操作系统一样,采用了分层的架构。从图1-2看,Android的架构分为四层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux(系统)内核层。
图1-2 Android平台体系架构
Android应用程序层是设备与用户进行交互的一层,它会同一系列核心应用程序包一起发布。该层包括客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序等。所有的应用程序都是使用Java语言编写的。
应用程序框架层是Android应用程序开发的基础。该应用程序架构简化了组件的重用机制,任何一个应用程序都可以发布它的功能块,并且任何其他的应用程序都可以使用已发布的功能块,但是新模块必须遵循框架的安全规则。同样,该应用程序重用机制也使用户可以方便地替换程序组件,开发者也可以通过继承来实现功能的扩展。
这一层也是基于Java语言开发实现的,主要包括以下内容。
· 丰富而又可扩展的视图(View)。可以用来构建应用程序,包括列表(ListView)、网格(GridView)、文本框(EditText)、按钮(Button)、可嵌入的Web浏览器等。
· 内容提供者(Content Provider)。使得一个应用程序可以访问另一个应用程序的数据(如联系人列表),或者共享自己的数据。
· 资源管理器(Resource Manager)。提供非代码资源的访问,如本地字符串常量、图片、布局文件等。
· 通知管理器(Notification Manager)。使得应用程序可以在状态栏显示自定义的提示信息。
· 活动管理器(Activity Manager)。用来管理应用程序生命周期并提供常用的导航回退功能。
系统运行库是应用程序框架的基础,它连接应用程序框架层与Linux内核层。它包含一些C/C++库,这些库将被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务,以下是一些核心库。
· 系统C库。一个从BSD继承来的标准C系统函数库libc,是专门为基于Embedded Linux的设备定制的。
· 基于PacketVideo OpenCore的媒体库。该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件,其编码格式包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG。
· Surface Manager。它对显示子系统进行管理,并且为多个应用程序提供2D和3D图层的无缝融合。
· LibWebCore。它是一个最新的Web浏览器引擎,支持Android浏览器和一个可嵌入的Web视图。
· Android运行时库。它是一个基于Java的运行时环境,包括核心库和Dalvik虚拟机两部分。核心库提供了Java语言API中的大多数功能,同时也包括Android的一些核心API。
所谓的系统内核(Kernel),就是操作系统核心底层软件结构,负责对硬件的访问,管理进程、内存、驱动程序以及支持文件系统等基础功能,它的性能和稳定性是整个操作系统正常运行的关键。Android是运行于Linux Kernel之上,但并不是GNU/Linux,仅为一个分支,因为Android系统删除了大部分GNU/Linux支持的功能。
Linux内核层为Android框架层提供了非常核心的支持,比如Camera驱动、USB驱动、Wi-Fi驱动等。除此之外,Android系统还实现了一些重要驱动,比如非常重要的进程间通信Binder驱动。Linux内核层好比房子的地基,只有地基稳固了,房子才会稳固,只有Android系统,内核层稳定高效,才能保证上层更流畅、更高效、更稳定地运行。Android的Linux Kernel控制包括安全(Security)、存储器管理(Memory Management)、进程管理(Process Management)、网络堆栈(Network Stack)、驱动程序模型(Driver Model)等。由于Linux内核全部使用C语言编写,所以Android内核层也是全部用C语言编写的。