前言
通常作为一个Android APP开发者,我们并不关心Android的源代码实现,不过随着Android开发者越来越多,企业在筛选Android程序员时越来越看中一个程序员对于Android底层的理解和思考,这里的底层主要就是Android Framewok中各个组件的运行原理,例如Binder的运行机制、ServiceManager的作用等等。
所以本篇就带你来大致了解一下Android系统的组成,以及Android Framework的层次架构。
一、Android OS的架构分层
![](https://img.haomeiwen.com/i3146091/6bc8ce1c66f12fb3.png)
Android系统是由众多子项目组成的,大致可以分为:应用程序、应用程序框架、系统运行库、Native库、硬件抽象层、Linux内核六个部分
我们从下往上依次来解释这几层。
-
Linux内核
Android底层是基于Linux操作系统的,所以从某种角度上来说,Android并不是一个全新的操作系统,它也属于Linux操作系统的一种变种。
Android 使用的 Linux 内核版本包含几个特殊的补充功能,例如:Low Memory Killer(一种内存管理系统,可更主动地保留内存)、唤醒锁定、Binder IPC 驱动程序以及对移动嵌入式平台来说非常重要的其他功能。这些补充功能主要用于增强系统功能,不会影响驱动程序开发。
-
硬件抽象层(HAL)
HAL 可定义一个标准接口以供硬件供应商实现,这可以让 Android 忽略较低级别的驱动程序实现。
我们知道Android系统的底层是基于Linux内核的,而Linux遵循GPL协议,这意味着其下所有的驱动程序都必须是开源的,这对于一个以商业为目的的操作系统是无法接受的,所以google的工程师们在Android中提供了HAL(Android基于Apache协议,修改源码无需开源),以保护商家的版权和利益。
-
Native C/C++库 和 系统运行库
这两层在架构图虽然用不同的颜色表示,不过从图中也能看出它们是平级实际上同属一层。
这一层包含了支持系统正常运行的基础库。Android中很多基础库都是基于现有成熟开源库,例如OpenGl ES、WebKit、SQLite等
AndroidRuntime就是Android APP开发者最熟悉的ART虚拟机了。
-
应用程序框架
这一层是Android提供的系统组件库,主要为上层应用程序提供API接口。同时也包含了很多很重要的系统服务,如ActivityManager、ServiceManager等面试常客。作为Android APP开发者,对于这一层也是需要有相当程度的认识,同时这一层也是我们理解Android系统的重点,后续我们会着重介绍。
-
应用程序
这一层就是我们开发的APP所处的地方,没什么好说的了。
二、查看Android Framework源码
要学习AndroidFramework,首先我们需要下载Android的源代码,关于如何下载Android源代码,网络上有很多文章,这里不再赘述。如果你不想下载源码,也可以访问http://androidxref.com/在线阅读源码。
- 打开网站,选择9.0.0_r3(目前最新的Android应该是Android10)
![](https://img.haomeiwen.com/i3146091/a946186201ea3259.png)
- 选择AndroidFramework
![](https://img.haomeiwen.com/i3146091/839272c6b3e32e03.png)
- Android Framework源码结构
![](https://img.haomeiwen.com/i3146091/9bb6d679e7234a65.png)
三、Android Framework目录结构
Android Framework的源码量很多,层级也很复杂,所以画了张草图来帮助我们理解framework源码的层级结构和每个目录所包含的内容。
![](https://img.haomeiwen.com/i3146091/f98845023f35ebc1.png)
上面这张图展示了framework的目录结构,不过还不算完善。后续的博客中,我们就以这张图为主,依次剖析framework中较为重要的几个部分的源码,然后再回头来继续完善这张图。
网友评论