1.按电源键先启动bootloader,由bootloader装载和启动Linux内核,Linux内核启动init进程。
2.init.cpp负责解析init.rc配置文件,init.rc有自己的一套书写规则(on Action,start Service配置...)
3.init.rc会配置启动ServiceManager进程,负责管理各大进程间的通信(binder)
4.init.rc会配置启动Zygote进程,其首先fork出SystemServer进程,其是Android系统的核心进程,启动各种Service,比如AMS,PMS,WMS
5.Zygote进程也会创建启动虚拟机(ART),fork出子进程供app使用,所以Zygote是所有应用的父进程
6.SystemServer加载完Java 各大Service后,会调用AMS(ActivityManagerService)的SystemReady()方法,发出“android.intent.category.HOME”的action,启动Launcher应用。