按下电源键到桌面亮起,Android 开机到底经历了什么?从 BootROM 到 Launcher 完整链路拆解(附开机优化实战)
目录
- 一、开机全过程概览
- 二、阶段一:BootROM — 芯片里刻死的代码
- 三、阶段二:BootLoader — 引导程序
- 四、阶段三:Linux Kernel — 内核启动
- 五、阶段四:init 进程 — 第一个用户态进程
- 六、阶段五:Zygote — Java 世界的起点
- 七、阶段六:SystemServer — 系统服务大爆炸
- 八、阶段七:Launcher — 桌面的诞生
- 九、完整启动时序图
- 十、各阶段启动耗时分解
- 十一、实战:开机速度优化
- 十二、开机卡在 Logo 怎么调试
- 十三、总结
一、开机全过程概览
Android 从按下电源键到看到桌面,经历了七个阶段。很多人只知道"开机慢",但不知道慢在哪个阶段。把这七个阶段搞清楚,优化才有方向。
总开机时间一般在8~15 秒(旗舰机偏下限,低端机偏上限)。其中 SystemServer 是大头,Zygote preload 次之。
二、阶段一:BootROM — 芯片里刻死的代码
设备一上电,SoC(系统级芯片)最先跑的是一段烧死在 ROM 里的代码——BootROM。这段代码芯片厂商在生产时就写死了,你改不了。
它干了什么:
- 初始化最基本的硬件——时钟、内存控制器、少量 GPIO
- 从 eMMC / UFS 存储芯片的指定分区找到 BootLoader
- 校验 BootLoader 的签名(Secure Boot)
- 把 BootLoader 加载到内存并跳转
BootROM 阶段 几十毫秒就过了。但如果签名校验失败,手机直接就砖了——没有救砖工具基本只能返厂。
三、阶段二:BootLoader — 引导程序
BootLoader 是你能接触到的第一个可编写代码的阶段。常见的实现有:
| BootLoader | 谁家用 |
|---|---|
| U-Boot | 大多数 Android 设备(高通、MTK) |
| ABL(Android BootLoader) | 高通较新平台 |
| Little Kernel (LK) | 老 MTK / 老高通平台 |