前言:小编热衷于收集整理资源,记录踩坑到爬坑的过程。希望能把自己所学,实际工作中使用的技术、学习方法、心得及踩过的一些坑,记录下来。也希望想做资深Android高级工程师的你一样,通过我的分享可以少走一些弯路,可以形成一套自己的方法,并应用到实际中。
学习Framework过程中,每个人都有自己的学习方法,仁者见仁智者见智。以下是我在学习过程中总结出来的东西,对自身来说,我认为比较有效率,拿出来跟大家交流一下。
为什么写这篇文章
刚开始学Framework,不要一行不漏的看懂全部源码,因为这是不可能的,就算你这么干了,效果也不见得好——毕竟只见树木,不见森林。打个简单的比方,Activity的启动流程,你不用关心在AMS里面这里跳到那里是干什么,还有ActivityStack以及它的那个SuperXX跳来跳去是在搞什么呢...
避免反复纠结一个点, 从而产生挫败感,学不下去。
说实话framework模块好多,一般有input,ams,wms,pms,binder为几个最关键最重要模块,这里面任何一个模块你要真正精通都比较困难,特别wms,那基本上没个一年实战,可能比较难,比如拿个冻屏,黑屏,闪黑等问题给你你能分析出来么,可能的原因太多,再来几个莫名奇妙的no focused anr等
还有冷门点的surfaceflinger,audioflinger等native的,display,功耗啥的,一般没几个人全懂。
记住一点的是学习Android framework,最终目的只有一个,就是「学会看源码」,而不是「学会源码」。如何快速地学习、梳理Framework知识体系呢?常见的学习方法有下面几种:
阅读书籍(方便梳理知识体系,但对于解决问题只能提供方向)。
直接阅读源码(效率低,挑战难度大)。
打Log和打堆栈 (效率有所提升,但需要反复编译,添加Log和堆栈代码)。
直接联调,实时便捷(需要调试版本)。
首先可以通过购买相关的书籍进行学习,其中主要的知识体系有Linux操作系统,比如进程、线程、进程间通信、虚拟内存,建立起自己的软件架构。
这里有需要的可以可以参考一下《Android Framework核心源码笔记》,里面内容包含了:Init、Zygote、SystemServer、Binder、Handler、AMS、PMS、Launcher……等知识点记录。
这套资料出品人来自前三星项目经理,扎根于Android底层框架十年之久,现腾讯课堂在任特聘讲师,其具有深厚的学术背景和丰富的项目及业务落地经验。
话就不多说了,接下来好好看下这份资料。
扫描下方二维码立即免费获取
第一章 系统启动流程分析
第一节 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配置的更新
扫描下方二维码立即免费获取
PS:我们还在8月8日~9日特邀了腾讯课堂Avlin和Lance老师为大家带来《Android12 Framework深入分析与定制开发实战》免费直播课,让大家深入解析Android 12 Framework系统启动流程及车载通信中间件集成实战演练。