前言
随着谷歌对Android框架的越加深度的封装,包括各种JetPack框架的推出等都是为了让应用开发更加精简。 这样带来的直接影响就是Android门槛被拉低了,应用开发只需要一个Activity就能制作一个App,貌似也不需要什么高深的技能。
然而Android这个是一个庞大的系统性的工程,各个版本都有一定兼容性问题,为了能快速定位问题,也为了学习Android框架中一些优秀的思想,时常需要查看Android系统源码层面的知识。
Framework是我们Android开发最常接触的框架,也是最优秀的框架之一,Framework的源码质量也是开源框架中的佼佼者,一个程序员想要让自己的开发水平得到提升,阅读源码是必不可少的,但是大部分人日常工作中能够接触到的代码有限,如果你只是在日常的工作中阅读同事的代码,那能学到的东西是非常有限的。
一来,工作中能接触到的同事的能力上限,跟全世界顶尖程序员的能力上限相比,差距是非常大的;再者,工作中的场景,经常被工期等非技术因素影响,并不能完全把开发者的技术水平体现出来。
因此,众多的优秀开源项目,就是一座巨大的知识宝库,这里就分享一份腾讯大佬整理Android Framework源码解读,相信能很好的帮助你从项目的整体架构中,学会组织代码的方法,或者一些架构的思维。
第一章 系统启动流程分析
- 第一节 Android启动概览
- 第二节 init.rc解析
- 第三节 Zygote
- 第四节 面试题
第二章 跨进程通信IPC解析
- 第一节 Sercice 还可以这么理解
- 第二节 Binder基础
- 第三节 Binder应用
- 第四节 AIDL应用(上)
- 第五节 AIDL应用(下)
- 第六节 Messenger原理及应用
- 第七节 服务端回调
- 第八节 获取服务(IBinder)
- 第九节 Binder面试题全解析
第三章 Handler源码解析
- 第一节 源码分析
- 第二节 难点问题
- 第三节Handler常问面试题
第四章 AMS 源码解析
- 第一节 引言
- 第二节 Android架构
- 第三节 通信方式
- 第四节 系统启动系列
- 第五节 AMS
- 第六节 AMS 面试题解析
第五章 WMS源码解析
- 第一节 WMS与activity启动流程
- 第二节 WMS绘制原理
- 第三节 WMS角色与实例化过程
- 第四节 WMS工作原理
- …
第六章 Surface源码解析
- 第一节 创建流程及软硬件绘制
- 第二节 双缓冲及SurfaceView解析
- 第三节 Android图形系统综述
- …
第七章 基于Android12.0的SurfaceFlinger源码解析
- 第一节 应用建立和SurfaceFlinger的沟通桥梁
- 第二节 SurfaceFlinger的启动和消息队列处理机制
- 第三节 SurfaceFlinger 之 VSync(上)
- 第四节 SurfaceFlinger之VSync(中)
- 第五节 SurfaceFlinger之VSync(下)
- …
第八章 PKMS源码解析
-
第一节 PKMS调用方式
-
第二节 PKMS启动过程分析
-
第三节 APK的扫描
-
第四节 APK的安装
-
第五节 PKMS之权限扫描
-
第六节 静默安装
-
第七节 requestPermissons源码流程解析
-
第八节 PKMS面试题
第九章 InputManagerService源码解析
- 第一节 Android Input输入事件处理流程(1)
- 第一节 Android Input输入事件处理流程(2)
- 第一节 Android Input输入事件处理流程(3)
第十章 DisplayManagerService源码解析
- 第一节 DisplayManagerService启动
- 第二节 DisplayAdapter和DisplayDevice的创建
- 第三节 DMS部分亮灭屏流程
- 第四节 亮度调节
- 第五节 Proximity Sensor灭屏原理
- 第六节 Logical Display和Physical Display配置的更新
结语
由于 Framework层代码量巨大,涉及到的逻辑线也非常多,经常容易看完后面的,忘记前面的,因此,要记得看完一部分及时总结。总结可以是一个流程图、一篇文章,或者任何你认为合适的方式,一来可以加深记忆,二来可以复习和会刊。