Android 开发进阶:Framework 源码与系统启动流程解析
前言
作为 Android 程序员,随着市场环境的变化,技术焦虑往往随之加深。面对日益临近的职业挑战,许多同行感到无所适从。然而与其他开发领域相比,中级以上的 Android 开发人员在市场上处于供不应求的状态。即使在疫情冲击下,Android 系统的全球市场份额依然高居榜首,这意味着 Android 开发在市场上仍有着大量的需求。
搜索网上的面经及面试题可以发现一个共性:几乎 80% 都有 Handler、Binder 相关的问题,且占比越来越大。因此,深入理解 Framework 是 Android 开发者进阶的关键。
学习 Framework 之前,首先要了解其本质。Android 本质上是一个基于 Linux 的系统,谷歌在 Linux 基础上开发了一系列软件。由于应用方向主要在移动端,Android 定义了自己的 APK 标准,需要在整个 Linux 系统上完成解包和运行代码的过程。这个过程涉及到如何启动进程,以及如何处理渲染和触摸信号。了解这些有助于理解代码为何会出现卡顿、崩溃,以及 APP 启动慢的原因。
Android Framework 的整体学习旨在深入本质,了解系统底层原理。按照整体学习路线,首先应攻克 Binder 和 Handler 相关的跨进程通信问题,因为这是多方软件协调处理的基础。接着了解开机流程、APK 安装、APP 启动过程、画面渲染及触摸信号处理。掌握了这些内容,基本可以实现从初级开发者向高级开发的过渡。
Android Framework 源码解析核心章节
第一章 系统启动流程分析
Android 系统完整的启动过程,从系统层次角度可分为 Linux 系统层、Android 系统服务层、Zygote 进程模型三个阶段。
- 第一节 Android 启动概括
- 第二节 init.rc 解析
- 第三节 Zygote
- 第四节 面试题
第二章 跨进程通信 IPC 解析
Binder 作为 Android 进程间通信的机制,可看做是一个驱动。在 Android 中,常见的进程间通信例如系统类的(打电话、闹钟等);自己创建的(如 WebView、视频播放、音频播放、大图浏览等)。
第三章 Handler 源码解析
- 第一节 源码分析
- 第二节 难点问题
- 第三节 Handler 常问面试题
第四章 AMS 源码解析
- 第一节 引言
- 第二节 Android 架构
- 第三节 通信方式
- 第四节 系统启动系列
- 第五节 AMS
- 第六节 AMS 面试题解析
第五章 WMS 源码解析
- 第一节 WMS 与 activity 启动流程
- 第二节 WMS 绘制原理
- 第三节 WMS 角色与实例化过程
- 第四节 WMS 工作原理
第六章 Surface 源码解析
- 第一节 创建流程及软硬件绘制
- 第二节 双缓冲及 Surface View 解析
- 第三节 Android 图形系统综述
第七章 基于 Android 12.0 的 SurfaceFlinger 源码解析
- 第一节 应用建立和 SurfaceFlinger 的沟通桥梁
- 第二节 SurfaceFlinger 的启动和消息队列处理机制
- 第三节 SurfaceFlinger 之 VSyncs(上)
- 第四节 SurfaceFlinger 之 VSyncs(中)
- 第五节 SurfaceFlinger 之 VSyncs(下)
第八章 PKMS 源码解析
- 第一节 PKMS 调用方式
- 第二节 PKMS 启动过程分析
- 第三节 APK 的扫描
- 第四节 APK 的安装
- 第五节 PKMS 之权限扫描
- 第六节 静默安装
- 第七节 requestPermissions 源码流程解析
- 第八节 PKMS 面试题
第九章 InputManagerService 源码解析
- 第一节 Android Input 输入事件处理流程(1)
- 第二节 Android Input 输入事件处理流程(2)
- 第三节 Android Input 输入事件处理流程(3)
第十章 DisplayManagerService 源码解析
- 第一节 DisplayManagerService 启动
- 第二节 DisplayAdapter 和 DisplayDevice 的创建
- 第三节 DMS 部分亮灭屏流程
- 第四节 亮度调节
- 第五节 Proximity Sensor 灭屏原理
- 第六节 Logical Display 和 Physical Display 配置的更新


