init.rc
android设备启动必须经历三个阶段,即BootLoader、Linux kernal、Android系统服务
实际上Android是运行在Linux上的一系列进程,严格来说并不算操作系统,Android中第一个启动的进程就是init。 init的PID为0,它通过解析init.rc脚本来构建系统的初始运行状态,是开发商用来控制去Android启动状态的一大利器。
init.rc语法
一个完整的init.rc脚本由4种类型组成:
- Action(动作)
- Commands(命令)
- Services(服务)
- Options(选项)
init进程启动总结
- 创建和挂载启动所需的文件目录
- 初始化和启动属性服务
- 解析init.rc配置文件,并启动Zygote进程
系统的关键服务
init作为Android系统的第一个进程,它通过解析init.rc来陆续启动其他关键系统进程。 这其中最重要的就是ServiceManager, Zygote, SystemServer.
1.ServiceManager
Android的binder机制的"DNS服务器"
2.Zygote
Android中的大多数应用进程和系统进程都是通过zygote来生成的。
3.SystemServer
SystemServer是Android进入Launcher前的最后准备,它提供了众多由java语言编写的"系统服务"。
4.Launcher启动过程
被Systemserver进程启动的AMS会启动Launcher,Launcher启动后会将应用程序快捷图标显示到桌面上。