以下是 Android Framework 核心基础的学习路线图:
清晰的学习路线图可以在 链接:https://pan.baidu.com/s/1F0Ibi8pHcYT39HASy3zvNw 提取码:1234
处下载到。
学习路线一共分为 11 个专题,接下来看看这 11 个专题都需要学习哪些内容:
基础部分已分享内容:
- Ubuntu 使用快速入门
- Make 构建工具入门
- 理解 Unicode UTF-8 UTF-16 UTF-32
- Linux Shell 脚本编程入门——核心基础语法
- Linux Shell 脚本编程入门 2——脚本自动化基础
- SEAndroid 使用极速上手
- 理解 C++ 的 Memory Order
- Android 平台如何编译执行 C C++ 可执行程序
- 如何阅读 Android 系统源码 —— Java 篇
- 如何阅读 Android 系统源码 —— C/C++ 篇
- JNI 编程上手指南之 HelloWorld 实战
- JNI 编程上手指南之 JNI 数据类型
- JNI 编程上手指南之描述符
- JNI 编程上手指南之 JNIEnv 详解
- JNI 编程上手指南之 JavaVM 详解
- JNI 编程上手指南之字符串处理
- JNI 编程上手指南之数组访问
- JNI 编程上手指南之 Native 访问 Java
- JNI 编程上手指南之异常处理
- JNI 编程上手指南之从内存角度再看引用类型
- JNI 编程上手指南之 JNI 调用性能优化
- JNI 编程上手指南之 Native Crash 分析
- JNI 编程上手指南之多线程
这部分内容提供有免费配套视频教程
这部分内容主要是让大家上手 Android 系统源码,对系统开发有一个感性的认知,主要有以下内容:
-
添加开机自启动 C++ 程序
-
系统源码管理工具 Gerrit 搭建与使用
Binder 是一套 linux 上的 远程过程调用(RPC) 编程框架,是整个 Android 系统的核心基础组件,在体验的系统开发的“快乐”以后,我们需要第一时间掌握 Binder 的里里外外。计划分享以下内容:
- 学习 Binder 的预备知识
- Binder 基本原理
- Binder 程序示例之 C 语言篇
- Binder 服务注册过程情景分析之 C 语言篇
- Binder 服务获取与使用过程情景分析之 C 语言篇
- Binder 驱动情景分析之 ServiceManager 启动过程
- Binder 驱动情景分析之服务注册过程
- Binder 驱动情景分析之服务获取与使用过程
- Binder C++ 程序示例
- Binder 程序示例之 aidl-cpp 篇
- Binder C++ 程序分析之主要类解析
- Binder 服务注册过程情景分析之 C++ 篇
- Binder 服务获取与使用过程情景分析之 C++ 篇
- Binder 程序示例之 Java 篇
- Binder Java 程序分析之主要类解析
- Binder 服务注册过程情景分析之 Java 篇
- Binder 服务获取与使用过程情景分析之 Java 篇
- Binder 多线程分析
- Binder 匿名服务分析
- Binder 死亡通知机制
- Binder 相关疑难 bug 解析
- Binder 面试题解析
所谓基础组件,就是系统源码中使用的较多的模块,需要学习的内容主要包括:
-
Android 源码中的智能指针
-
Android 属性系统使用与分析
-
Android 日志系统使用与分析
-
Android 中的权限管理
-
Android 匿名共享
-
基础组件面试题解析
Hal 主要是对驱动功能做一些封装,下接驱动,上接 Framework,主要学习以下内容:
-
通过 JNI 访问到 Hal 层接口
-
Framework 中添加访问 Hello Driver 的硬件服务
-
编写 App 访问硬件服务
-
HwBinder 分析上
-
HwBinder 分析中
-
HwBinder 分析下
-
Hal 层面试题分析
有的时候我们可能需要修改构造系统的行为,这需要我们对 AOSP 的构造系统有基本的认识,下面是构造系统的学习顺序:
-
AOSP 构造系统的演进
-
构造系统初始化
-
编译过程解析
-
打包流程解析
-
构造系统面试题分析
应用层框架是应用开发接触最频繁的组件,主要掌握以下几个方面:
-
AMS/ATMS 与四大组件
-
Activity 启动过程与进程启动
-
Service 启动
-
ContentProvider 实现原理
-
广播机制
-
-
Handler 与 Looper 消息处理机制
-
PackageManagerService 工作流程与原理
-
应用层框架面试题分析
系统启动是我们常打交道的部分,其流程如下图所示:
图片来自这里
主要熟悉以下内容:
-
系统启动过程整体流程
-
init 进程解析
-
zygote 进程解析
-
SystemServer 进程解析
-
系统启动过程面试题分析
Android 图形系统是系统框架中一个非常重要的子系统,我们从以下几个方面来学习和理解图形系统的整体框架:
-
图形系统整体框架
-
Hal 层原理分析
-
SurfaceFlinger 实现与剖析
-
WMS 实现与剖析
-
Android View 系统分析
-
VSync 原理解析
-
Android 图形系统面试题分析
输入系统主要分为输入子系统和 IMS,我们重以下几个角度来学习 Android 的输入系统:
-
输入系统整体框架
-
事件的读取
-
事件的分发
-
事件的处理
-
Android 输入系统面试题分析
系统开发的大部分内容是做系统应用开发,常修改的系统应用如下:
-
Settings
-
Launcher
-
SystemUI
-
系统应用开发相关面试题分析
- Android 多屏显示分析
在掌握了这 11 个专题后,不论是继续研究 Framework 中其他模块,或是参与 App 开发,又或是研究内核与驱动,我相信,你一定早已是是游刃有余了!