图片转自http://blog.jobbole.com/67931/
一, 主要流程
- BootLoader引导,加载内核
- 内核模块启动init进程
- init进程挂载目录,解析init.rc配置文件,fork一个zygote进程
- zygote进程创建虚拟机,创建serverSocket,fork一个systemServer进程
- systemServer启动和注册AMS、PMS、WMS等service到serviceManager里,最后启动系统界面
二, init进程
内核模块启动init进程(http://androidxref.com/source/xref/system/core/init/init.c)后,init进程挂载目录,init_parse_config_file(“/init.rc”)解析init.rc配置文件(system/core/rootdir/init.rc),启动服务和进程
- servicemanager:管理其他所有binder service,注册添加服务,获取服务
- zygote
- media: add AudioFlinger,AudioPolicyService,MediaPlayerService and CameraService to servicemanager
- bootanim(开机动画和铃声)等其他服务
init.rc里启动zygote进程的语句是
service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
class main
socket z