1.2 Android系统源码目录
学习Android系统源码,需要掌握系统源码目录。可以访问http://androidxref.com来阅读系统源码,当然,最好是将源码下载下来,下载源码的方式有很多种,这里我推荐使用百度网盘地址http://pan.baidu.com/s/1ngsZs进行下载,目前其中提供了Android 1.6到Android 8.1.0多个Android版本的源码。
1.2.1 整体结构
各个版本的源码目录基本是类似的,如果是编译后的源码目录,会多一个out文件夹,用来存储编译产生的文件。Android 8.0.0的系统根目录结构说明如表1-3所示。
表1-3 系统根目录结构说明
从表1-3可以看出,系统源码分类清晰,内容庞大且复杂,接下来分析packages目录中的内容,也就是应用层部分。
1.2.2 应用层部分
应用层位于整个Android 系统的最上层,开发者开发的应用程序以及系统内置的应用程序都在应用层。源码根目录中的packages目录对应着系统应用层,它的目录结构如表1-4所示。
表1-4 packages目录结构
从目录结构可以发现,packages目录存放着系统核心应用程序、第三方应用程序和输入法等,这些应用程序都是运行在系统应用层的,因此packages目录对应着系统的应用层。
1.2.3 应用框架层部分
应用框架层是系统的核心部分,一方面向上提供接口给应用层调用,另一方面向下与C/C++程序库及硬件抽象层等进行衔接。应用框架层的主要实现代码在frameworks/base和frameworks/av目录下,其中frameworks/base目录结构如表1-5所示。
表1-5 frameworks/base目录
1.2.4 C/C++程序库部分
系统运行库层(Native)中的C/C++程序库的类型繁多,功能强大,C/C++程序库并不完全在一个目录中,这里给出几个常用且比较重要的C/C++程序库所在的目录位置,如表1-6所示。
表1-6 C/C++程序库所在的目录位置
讲完C/C++程序库部分,其余的部分在表1-3中已经给出。Android运行时库的代码在art/目录中;硬件抽象层的代码在hardware/目录中,这是手机厂商改动最大的部分,根据手机终端所采用的硬件平台不同会有不同的实现,剩下的目录在这里就不再详细介绍了,有兴趣的读者可以自行研究。