每一个Android开发,基本都了解或者学习过系统的知识,一是因为国内软件行业内卷,找工作时“面试造火箭,工作拧螺丝”的局面导致的,另一方面,从客观角度来讲,学习Android系统、Framework 等源代码或者其工作方式也可以提升我们,带来以下好处:
- 学习 Android 系统源码可以让开发者更深入地了解系统内部的工作原理和机制,以及各个模块之间的关系。这可以帮助开发者更好地利用系统提供的功能和资源,以及更好地进行调试和优化。
- 学习 Android Framework 等源码可以帮助开发者掌握更高级的开发技能,例如自定义控件、优化性能等。这些技能可以让开发者更好地应对复杂的开发需求和问题。
- 学习 Android Framework 等源码可以让开发者更好地理解系统的工作原理,以及各个模块之间的交互和协作。这可以帮助开发者更快地定位问题、优化代码,并且提高开发效率。
- 如果开发者需要开发定制化的 Android 系统,例如适配特定设备或行业应用,学习 Android 系统源码是必要的。只有深入了解系统的实现原理和机制,才能对系统进行有效的修改和定制。
- 涨工资真的很快,赚钱很多,钱多了就可以娶媳妇儿,让家人过上好生活。
但是系统学习不是必须的,只有从事系统定制开发的同学,才有必要学习,其他人完全没必要,没有必要弄明白按下开关发生了什么?点亮屏幕是怎么做的?
普通的开发者更重要的是学习Framework的知识。
部分人的苦恼
对于Framework的学习从未间断过,但是在工作中也没有使用过,并且学了就忘,我就是这部分人的典型代表,不学感觉实现不了人生理想,学了经常怀疑人生。
那为什么是这样呢?
对于不熟悉的知识记忆是很困难的,特别是走马观花的学习方式,因为Framework的学习都是在大神的基础上跟流程的。
那么以下这份来自字节大佬从零开始的Framework学习笔记你不容错过,其内包含包含系统启动流程,Binder,Handler,WMS,AMS等等。每个板块都附有详细的相关代码和其自学理解。
由于篇幅原因,本文精选几个章节
第一章 系统启动流程分析
- 第一节 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配置的更新