Android 应用开发走到一定阶段,很多工程师会卡在“系统黑盒”上。比如想实现跨应用通知、自定义 Launcher 权限控制,或者做 AOSP 适配时,仅靠官方 SDK 文档往往不够,需要理解 SystemServer 启动流程、Binder 通信机制以及系统服务注册逻辑。这套教程正是针对“应用开发者”视角切入,不深入 Kernel 或 HAL 层,而是聚焦于应用与 Framework 交互的关键节点。它解决的问题不是“如何重写系统”,而是“如何在现有系统机制下,合法且高效地调用底层能力”。对于日常做 App 封装、插件化框架、或企业级应用安全加固的团队,这种理解能显著减少“为什么这个 API 在特定机型上失效”的排查时间。

适合基础与学习门槛

这门课不适合纯小白。前提是你已经熟练掌握 Java/Kotlin,理解 Activity/Service/Lifecycle 生命周期,并至少有一个完整 App 的上线经验。如果你对 Android 源码结构感到陌生,但能看懂 Log 输出和 basic IPC 概念,就可以入门。课程不假设你读过 Linux 内核,但会要求你具备基本的多线程和对象生命周期意识。相比给内核工程师看的深度剖析,这套内容的颗粒度更贴近应用层痛点,术语解释得更直白,避免了纯源码导读的枯燥感。如果你是转行者,建议先补齐 Android 基础组件知识,再攻 Framework,否则容易在 Binder 机制部分卡壳。

建议观看路径与独立能力

建议优先观看“系统服务注册与启动流程”和“Binder 通信底层逻辑”这两个核心模块。前者解释了 SystemServer 如何拉起关键服务,这是理解“为什么某些 API 必须通过 SystemServer 代理”的基础;后者则是跨进程通信的命脉,搞懂 AIDL 背后的数据拷贝机制,才能避免常见的 ANR 和内存泄漏问题。学完这两块,结合课程提供的简单 Demo,你应该能独立编写一个自定义 System Service 并在 App 中通过反射或 AIDL 调用它,从而实现对特定系统行为的拦截或增强。资料包中的代码示例不应直接复制,而应作为“调试靶子”:尝试修改参数,观察 Logcat 输出变化,验证你对通信流程的理解。这种“改-跑-看”的闭环,比被动听代码讲解更有效。

资料配合练习方法

课程配套的资料包主要包含核心源码片段标注笔记和几个典型的交互场景 Demo。建议不要一开始就通读所有笔记,而是带着具体问题去查。例如,当你遇到“App 在后台被系统杀掉”的问题时,先回顾“进程管理策略”章节,再对照资料中的 Service 优先级判定逻辑,手动在模拟器中模拟不同场景。练习时,务必保留原始 Log 记录,这是验证你推理是否正确的唯一依据。若时间有限,可跳过过于细节的类图解,重点掌握“调用链路”:从 App 发起 Intent 到 Framework 分发、再到 System 服务响应的全过程。最终目标是你能不看文档,独立判断某个定制需求属于应用层可实现,还是必须修改 System 分区——这种边界感的建立,是比记住具体 API 更有价值的产出。

阿豪讲Framework-写给应用开发的Android Framework教程

本课程隶属 会员库 · 其他机构课程,包含完整课程目录与配套资料,购买后联系客服获取下载方式;会员可直接免费下载。

课程目录

配套资料/
配套资料.rar
01_001.玩转AOSP.mp4
02_002.系统开发工具推荐.mp4
03_003.添加Product.mp4
04_004.添加可执行程序.mp4
05_005.系统App源码添加.mp4
06_006.使用android studio开发系统APP.mp4
07_000.Binder 专题导学 —— 如何深入掌握 Bind.mp4
08_001.学习 Binder 的预备知识1.mp4
09_002.学习 Binder 的预备知识2.mp4
100_001.Android14 WMS AMS 窗口层级结构解析.mp4
10_003.学习 Binder 的预备知识3.mp4
11_004. 学习 Binder 的预备知识4.mp4
12_005.Binder 基本原理.mp4
13_006.Binder 程序示例之 C 语言篇.mp4
14_007. Binder C 语言示例源码分析之 Servic.mp4
15_008.Binder C 语言示例源码分析之服务注册过程.mp4
16_009. Binder C 语言示例源码分析之服务获取与使用.mp4
17_010. Android Binder 驱动框架设计与分析.mp4
18_011. Binder 驱动情景分析之 ServiceMan.mp4
19_012.Binder驱动情景分析之服务注册过程上.mp4
20_013.Binder驱动情景分析之服务注册过程下.mp4
21_014.Binder 驱动情景分析之服务获取与使用过程.mp4
22_015.Binder 程序示例之C++篇.mp4
23_016.Binder C++ 程序分析之主要类解析.mp4
24_017.Binder 服务注册过程情景分析之C++篇).mp4
25_018.Binder 服务获取与使用过程情景分析之C++篇.mp4
26_019.Binder 程序示例之 aidl-cpp 篇.mp4
27_020.添加 Native 系统服务.mp4
28_021.添加 Native 系统服务回调.mp4
29_022.Binder 程序示例之 Java 篇.mp4
30_023.Binder Java 层初始化.mp4
31_024.Binder Java 层服务注册过程分析.mp4
32_025.添加 Java 系统服务.mp4
33_026.Android Java 系统服务框架与第三方 Ap.mp4
34_027.添加 Java 系统服务回调.mp4
35_028.AIDL 数据类型详解之 Java 篇.mp4
36_029.AIDL 数据类型详解之 C++ 篇.mp4
37_30.Java 调用 Native 服务.mp4
38_31.Native 调用 Java Binder 服务.mp4
39_32.AIDL 关键字 in out inout onewa.mp4
40_33.Binder 匿名服务源码分析.mp4
41_34.Binder 中的 Parcel 数据结构分析(C++.mp4
42_35.Binder 中的 Parcel 数据结构分析(Jav.mp4
43_36.Binder多线程情景分析.mp4
44_37.Binder 代理对象泄露问题分析.mp4
45_38.Binder 死亡通知情景分析.mp4
46_39.Binder 异常处理机制.mp4
47_001.基础组件专题介绍.mp4
48_002.Android 平台智能指针使用与分析.mp4
49_003.弱引用 wp 的作用.mp4
50_004.Linux IO 多路复用 epoll 机制.mp4
51_005.Linux timerfd 的基本使用.mp4
52_006.Android Native Looper 机制.mp4
53_007.Android Java Looper 机制.mp4
54_008.Handler同步屏障机制.mp4
55_009.IdleHanlder 原理与使用.mp4
56_010.属性系统概述.mp4
57_011.属性系统入门.mp4
58_012.属性文件生成过程分析.mp4
59_013.属性与SeLinux.mp4
60_014.属性系统源码分析一.mp4
61_015.属性系统源码分析二.mp4
62_016.属性系统源码分析三.mp4
63_017.属性系统源码分析四.mp4
64_018.Unix Domain Socket 使用解析之 U.mp4
65_019.Unix Domain Socket 使用解析之 T.mp4
66_020.Android 中的 Unix Domain Soc.mp4
67_021.socketpair 使用解析.mp4
68_001.Android 系统启动.mp4
69_002.Init 进程启动分析一.mp4
70_003.Init 进程启动分析二.mp4
71_004.Init 进程启动分析三.mp4
72_005.Init 进程启动分析四.mp4
73_006.Init 进程启动分析五.mp4
74_007.zygote 进程启动分析一.mp4
75_008.zygote 进程启动分析二.mp4
76_009.zygote 进程启动分析三.mp4
77_010.应用进程启动分析.mp4
78_11.SystemServer 进程启动分析一.mp4
79_12.SystemServer 进程启动分析二.mp4
80_013.Android 平台开机时间分析.mp4
81_014.开机动画 BootAnimation 源码分析.mp4
82_015.Android 平台自定义开机动画.mp4
83_016.BootAnim添加视频播放功能.mp4
84_001. Android HAL 层概览.mp4
85_002.传统 Hal 开发指南1 —— 开发环境准备.mp4
86_003.传统 Hal 开发指南2 —— 传统 HAL 整体架.mp4
87_004.驱动开发.mp4
88_005.实现一个简单的 Hal 模块.mp4
89_006.添加硬件访问服务.mp4
90_007.开发一个 App 访问硬件服务.mp4
91_008.Android 8 HAL 变迁.mp4
92_009.Binderized HALs 实例分析.mp4
93_010. Passthrough HALs 实例分析.mp4
94_011. Same-Process HALs 实例分析.mp4
95_012.HIDL 驱动开发.mp4
96_013.简单 HIDL HAL 实现.mp4
97_014.添加硬件访问服务.mp4
98_15. 开发一个 App 访问硬件服务.mp4
99_16.AIDL Hal 开发指南1—— 开发环境准备.mp4