学习目的
接下来,会围绕Android Framework进行解读,学习设计思想、设计模式等等,主要目的是为了用于开发实战,实现一些比较复杂的功能
前置知识
阅读源码需要一些基础,建议循序渐进
- C/C++基础
- Linux内核知识,比如进程间通信、内存管理、i/o多路复用机制等等
- API调用路径可通过
startUML梳理
总览
借用gityuan的一张图
Android系统启动经过开机,由下往上依次经过
BootLoader-Kernel-Native-Java Framework-Apps
系统开机加载固化到ROM中的系统到RAM中,Linux kernel抽象出HAL-硬件访问接口,供C++ Native调用,init进程孵化出Zygote进程并启动servermanager服务,而Native是由Media Server管理,再往上就是Java Framework,再到App层,对于每一个App,都至少存在一个进程
分析重点
-
Zygote进程如何启动
-
binder如何实现进程间通信的
-
AMS
-
WMS
-
PMS
...
附思维导图