1.2 Android系统架构
我们每天都在讲“Android”、“Android”,可谁能告诉我,“Android”到底是什么呢?从宏观上讲,Android是一个移动操作系统,但这是一个很宽泛的概念。达·芬奇通过解剖了解人体结构,才能把人物画得逼真传神,那么我们今天也来“解剖”一下Android。
如图1.3所示,这是一张讲解Android系统架构的经典示意图。它将Android大致分为了四层,即Linux内核层、库和运行时、Framework层和应用层。Android的体系架构鼓励系统组件重用,共享组件间的数据,并且定义组件间的访问权限控制。可以说,这些层次结构既是相互独立,又是相互关联的。
图1.3 Android系统架构
下面我们继续“开刀”。有人说,Android是一个用于连接设备的软件集合,图1.4就代表了一个最抽象的Android系统架构。
图1.4 Android架构总览
1.2.1 Linux
Linux层,Android最低层最核心的部分。当我们打开手机Setting,选择about phone选项,这一选项所显示的内核版本,就是我们所用的Linux内核的版本。Linux层包含了Android系统的核心服务,包括硬件驱动、进程管理、安全系统,等等。
1.2.2 Dalvik与ART
Dalvik包含了一整套的Android运行环境虚拟机,每个App都会分配Dalvik虚拟机来保证互相之间不受干扰,并保持独立。它的特点是在运行时编译。打个比方,就好比你买了一辆可折叠的自行车,平时是折叠的,只有骑的时候,才需要组装起来用。而在Android 5.X版本开始,ART模式已经取代了Dalvik,ART采用的是安装时就进行编译,以后运行时就不用编译了,这就好比你买了辆组装好了的自行车,装好就可以骑了。当然,对在其虚拟机环境中运行的大部分App来说,它们都运行着同样的代码。
1.2.3 Framework
如图1.5所示为图1.4中Android App Framework的详细版。它包含了整个Android Framework的重点,如果你以后要研究Framework的具体流程,基本就是在和它们打交道。
图1.5 Android App Framework
1.2.4 Standard libraries
如图1.6所示为图1.4中Standard libraries的详细版,这里包含的是Android中的一些标准库,所谓标准,就是开发者在开源环境中可以使用的开发库。
图1.6 Standard libraries
1.2.5 Application
图1.7和图1.8分别表示了使用NDK开发和Java开发的App的主要构成。可以看出,不管是哪种App,它们都有Android Manifest文件、Dalvik Classes、Resource Bundle这几个东西,相信解压过Apk的朋友应该注意到了,这些就是我们解压Apk后的文件。
![]() | ![]() |
| 图1.7 Android NDK App | 图1.8 Android SDK App |
对于开发者来说,与Android系统最直接的接触就是SDK,应用开发者应当关注每个版本的SDK修改,从而提高应用的兼容性。如果站在Android设计者的角度上来看整个Android的架构,设计者希望Android的框架层能够起到承上启下的功能,让应用的各个组件之间解耦,并通过框架来进行统一的调度、管理。
Android的系统架构,说简单点,可以只用一张图展示,说复杂点,可以写几千页的书,Android的系统架构就像人心一样,有时候看似简单,却蕴藏着难以捉摸的东西,要想真搞清楚,也绝非一朝一夕之功。所以,初学者首先只需要对这些有一个大概的认识就可以了,等掌握了使用方法后,就可以慢慢地了解它的运行原理,到时候,自然而然,你就会看清楚Android的系统架构。
