📘 Zygote · 源码深潜
30章 完整图谱
🎯 友好 · 明快色系
点击卡片标题跳转对应章节 · 从init到未来
📚 共30讲 · 系统剖析
01
Zygote概述
定位·核心作用·孵化应用与系统服务进程·与init进程的关系
02
Zygote启动流程 (上)
init.rc启动脚本·service关键字·class main与late_start区别
03
Zygote启动流程 (中)
app_process主函数·AndroidRuntime::start·JNI环境初始化
04
Zygote启动流程 (下)
ZygoteInit.main()·preload()预加载·Socket创建与监听
05
Zygote的Native世界
app_main.cpp·AppRuntime继承·AndroidRuntime::startReg
06
Zygote的Java世界
ZygoteInit结构·registerZygoteSocket·preloadClasses·preloadResources
07
预加载机制详解 (上)
preloadClasses()加载预定义类·preloaded-classes文件格式与路径
08
预加载机制详解 (下)
preloadResources()·preloadSharedLibraries()·预加载性能影响
09
Zygote的Socket通信
LocalServerSocket创建·ZygoteConnection·acceptCommandPeer()
10
进程孵化请求解析
ZygoteConnection.runOnce()·参数解析 (--setuid, --nice-name等)
11
fork()系统调用 (上)
fork()工作原理·写时拷贝·Zygote为何使用fork而非exec
12
fork()系统调用 (下)
forkAndSpecialize()·父子进程差异化·Zygote pid文件
13
Zygote的SELinux策略
SELinux应用·安全上下文切换·avc审计日志
14
Zygote的权限管理
setuid/setgid实现·capabilities继承与限制·rlimit资源限制
15
Zygote的启动模式
普通模式 vs SystemServer模式·--start-system-server参数
16
SystemServer的诞生
Zygote.forkSystemServer()·进程启动·handleSystemServerProcess()
17
Zygote的GC与内存管理
堆初始化·预加载对象内存分布·对GC的影响
18
Zygote的日志系统
EventLog与Logcat·关键日志分析 (boot_progress_start, zygote_launch)
19
Zygote的异常处理
Crash处理机制·ZygoteHooks·UncaughtExceptionHandler
20
Zygote的Watchdog
ZygoteWatchdog实现·超时检测·与SystemServer Watchdog区别
21
Zygote的NativeBridge
NativeBridge作用·Android on Chrome OS支持·初始化
22
Zygote的USAP机制 (上)
USAP池概念·引入原因·与普通fork对比
23
Zygote的USAP机制 (下)
USAPPool创建与管理·回收·Socket通信
24
Zygote与App进程的交互
AMS通过Socket发送请求·Zygote返回新进程pid
25
Zygote的启动性能优化
启动时间测量·预加载优化·并行加载·PGO
26
Zygote的稳定性保障
OOM保护·lowmemorykiller影响·自动重启机制
27
Zygote的调试技巧
strace跟踪·gdb调试·breakpoint关键函数设断
28
Zygote的版本演进
Android 4.4→14 关键变化·commit与设计思想演变
29
Zygote的定制与魔改
厂商定制 (MIUI, EMUI)·自定义预加载·孵化策略修改
30
Zygote的未来展望
Android 15+趋势·与ART关系·微内核化影响