android启动过程
系统加电,执行bootloader
这一步主要是与硬件有关,bootloader负责初始化手机最小的硬件环境,然后加载内核到内存当中。
start_kernel
内核加载到内存后,通过调用start_kernel,启动用户空间的init中的程序。
开启系统守护进程
init解析init.rc 文件。开启系统守护进程,最重要的是zygote和ServiceManager 两个守护进程。zygote是启动java进程。ServiceManager是启动binder通信进程。
启动核心服务,并添加到ServiceManager
zygote在虚拟机中启动systen_server.在systen_server中启动核心的服务并将核心服务添加到ServiceManager中。系统进入systenReady状态。
进入桌面系统
在systemReady状态下,zugote和ServiceManager之间的Socket通信。通过zygote启动桌面系统。