1.3.2 Android的应用程序框架
从上面的章节中,我们了解到嵌入式系统和Android平台的基本概念,下面我们来讨论一下Android的系统架构。如图1.4所示。
图1.4 Android系统架构图
可以看到Android分为四层,由高到低分别是应用层、应用框架层、系统运行库层和Linux内核层。其中,第一、二层主要由Java代码实现,第三层由C和C++实现,第四层由C语言实现。从Linux操作系统的角度来看,第三、四层次之间是内核空间与用户空间的分界线,第四层运行于内核空间,第一、二、三层运行于用户空间。第二、三层之间,是本地代码层和Java代码层的接口。第一、二层之间是系统API接口。
下面我们来逐一分析一下每一层。
(1)应用层。Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用Java语言编写的。
(2)应用框架层。这一层是编写Google发布的核心应用时所使用的API框架,开发人员同样可以使用这些框架来开发自己的应用程序,简化了程序开发的架构设计。但是要注意遵守框架的开发原则。
(3)Android运行库。Android包括了一个核心库,该核心库提供了Java编程语言核心库的大多数功能。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。Dalvik虚拟机执行.dex格式的可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由Java编译器编译,然后通过SDK中的“dx”工具转化成.dex格式由虚拟机执行。Dalvik虚拟机依赖于Linux内核的一些功能,比如线程机制和底层内存管理机制。
(4)Linux内核。Android的核心系统服务依赖于Linux 2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的抽象层。