整体流程
-
按下电源键
-
加载
BootLoader
程序到Ram -
拉起Linux内核
-
寻找init.cpp文件(
system/core/init/init.cpp
)启动init进程- 进行基本文件系统设置
property_init()
初始化基础属性服务start_property_service()
启动基础属性服务- 属性服务用来查询或者设置相应的属性
- 解析
init.rc
文件- **启动
ServiceManager
**- 主要就是打开Binder驱动, 开启循环等待接收client的消息
- 将自己注册为管理员
- 后面SystemServer进程中的服务,都会注册到这里,
- 通过
AppRunTIme.start
启动zygote
进程- 启动虚拟机
- 通过JNI 关联jave层代码
- 注册名为
zygote
的LocalServiceSocket
用来接收AMS创建应用的消息 - 预加载资源如 类资源 文字资源
opengl
等 - 启动
systemServer
进程- 启动Binder 线程池
- 启动相关服务,installer,ams,pms等
- 启动Launcher
- 启动while循环让
LocalServiceSocket
等待接收AMS的消息
- **启动