系统架构
分为五层,从上往下依次是应用层、应用框架层、系统运行库层、硬件抽象层和Linux内核层。
- 应用层(System Apps):系统内置的应用程序以及非系统级的应用程序都属于应用层,负责与用户进行直接交互。
- 应用框架层(Java API FrameWork):应用框架层为开发人员提供了开发应用程序所需要的API,我们平时开发应用程序都是调用这一层提供的API。
- 系统运行库层(Native):系统运行库层分为两部分:分别是C/C++程序库和Android运行时库。运行时库又分为核心库和ART(Dalvik),核心库提供了Java语言核心库的大多数功能,这样开发者可以使用Java语言来编写Android应用。
- 硬件抽象层(HAL):硬件抽象层是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化,为了保护硬件厂商的知识产权,它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台。
- Linux内核层(Linux Kernel):Android 的核心系统服务基于Linux内核,在此基础上添加了部分Android专用驱动。
Android系统源码目录
Android 8.0.0系统根目录结构说明如下图所示:
应用层
应用层位于整个Android系统的最上层,开发者开发的应用程序以及系统内置应用程序都在应用层,它的目录结构如下:
应用框架层部分
应用框架层是系统的核心部分,一方面向上提供接口给应用层调用,另一方面向下与下层进行衔接,应用框架层的主要实现代码在 frameworks/base 和 frameworks/av 目录下,其中frameworks/base 目录结构如下:
源码阅读
系统源码阅读的方式有在线阅读和下载源码到本地用软件工具阅读。
在线阅读
Android 在线阅读源码的网站有很多,比如:http://androidxref.com/,http://www.androidos.net.cn/,在书中,作者推荐使用前一个url在线阅读;我个人比较推荐第二个,因为它在类搜索这块做得非常舒服,像使用google、baidu 一样容易使用,此外,它还是中文界面。
使用Source Insight
下载源码到本地,再用软件工具阅读源码是最好的方式,不受网速影响,效率更高,本地阅读源码可以采用 Android Studio、Eclipse、Sublime 和Source Insight 等软件,这里推荐使用Source Insight 。