整体流程
-
按下电源键
-
加载
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的消息
- **启动
本文详细阐述了Android系统的启动流程,从按下电源键开始,经过BootLoader加载,Linux内核启动,再到init进程、ServiceManager、Zygote进程和服务的启动,最后到系统Server和Launcher的运行。过程中涉及关键步骤如Binder驱动、类资源预加载和应用程序环境准备等。

被折叠的 条评论
为什么被折叠?



