第 1 章 Android体系与系统架构
1.1 Google生态系统
Android系统底层通过最快的C语言保证效率,上层使用Java简单、快速进行开发,开放的系统让各个Android社区、开发者论坛空前火爆,甚至是可以进行无限可能的系统定制化。可以说Android的到来,奠定了移动操作系统一个里程碑式时代的开始。
1.2 Android系统架构
问:Android到底是个什么东西?
答:从宏观上讲,Android是一个移动操作系统,但这是一个很宽泛的概念。Android系统架构大致分为四层:Linux内核层、库和运行时、Framework层和应用层。也有人说Android是一个用于连接设备的软件集合。
下图为Android系统架构图:
1.Linux
其中Linux层是Android最底层最核心的部分,Linux层包含了Android系统的核心服务,包括硬件驱动、进程管理、安全系统等等。
2.Dalvik与ART
Dalvik包含了一整套的Android运行环境虚拟机,每个App都会分配Dalvik虚拟机来保证互相之间不受干扰,并保持独立。它的特点是在运行时编译。而在Android 5.X版本开始,ART模式已经取代了Dalvik,ART采用的是安装时就进行编译,以后运行时就不用编译了。
3.Framework
4.Standard libraries
5.Application
Application使用NDK开发和Java开发,它们都有Android Manifest文件、Dalvik Classes、Resource Bundle这几个东西。对于开发者来说,与Android系统最直接的接触就是SDK。
1.3 Android App组件架构
Android的App组件架构,通常指Android四大组件,指的是Activity、BroadCastReciever、ContentProvider和Service,它们是组成一个Android App的最基本元素。
1.Android四大组件如何协同工作
在Android四大组件中,Activity作为人机交互的第一界面,负责向用户展示信息和处理结果,而这些信息的来源,可以是通过资源获取,也可以通过Content Provider来获取其他应用的信息,或者是Service从后台计算、下载、处理的结果,当然也可以是通过BroadCast Reciever获取到的广播信息。同时,Android系统还提供了一个信使——Intent,作为信息传递的载体。组件与组件之间通过Intent来通信、传递信息、交换数据。
2.Context
在程序中,我们可以将Context理解为当前对象在程序中所处的一个环境,一个与系统交互的过程。
Activity、Service、Application均继承自Context。
Android应用程序会创建应用上下文Context的几个时间点:①创建Application。②创建Activity。③创建Service。
1.4 Android系统源代码目录与系统目录
1.Makefile机制
一个像Android这样的大型工程,它的源文件不计其数,不同的功能、模块,按类型分别放置在不同的目录中,这些模块通常会有一个叫Makefile的文件来进行管理。它定义了一系列的规则来指定模块,哪些文件需要编译,以及这些文件该按照怎样的顺序去编译。甚至,它还可以配置更复杂的功能操作,比如定义编译规则,打包规则等,因为Makefile就像一个shell脚本,不仅可以使用自己的语法,也能调用操作系统的命令。Makefile最大的好处就是自动化编译,同时还可以做到可控制的编译,Android通过Makefile来描述Android各个组件间的联系并指导它们进行自动化编译。Makefile的语法,制定了各个源代码该如何连接并生成相应的可执行程序。