Android系统的启动过程

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启动后会将应用程序快捷图标显示到桌面上。

Android系统的启动过程

Android系统的启动过程