Init.rc启动
- 创建和挂在启动所需的文件目录
- 初始化和启动属性服务
- 解析init.rc配置文件并启动Ztgote进程
Zygote进程
- 创建一个Server端的Socket
- 预加载类和资源
- 启动SystemServer进程
- 等待AMS请求创建新的应用程序进程
SystemServer进程
-
启动Binder线程池,这样就可以与其他进程进行通信
-
创建SystemServerManager,对于系统的服务进行创建,启动和生命周期管理
-
启动各种系统服务
SystemServer进程源代码
SystemServer启动核心服务
Launcher启动过程
主要作用
- 作为安卓系统的启动器,用于启动应用程序
- 作为安卓系统的桌面,用于显示和管理应用程序的快捷图标或者其他桌面组件
2.5 Android系统启动流程
结合本章前4节的内容,我们可以清晰地总结出Android系统启动流程,这个流程主要有以下几个部分。
-
启动电源以及系统启动
当电源按下时引导芯片代码从预定义的地方(固化在 ROM)开始执行。加载引导程序BootLoader 到 RAM,然后执行。
-
引导程序 BootLoader
引导程序 BootLoader是在 Android 操作系统开始运行前的一个小程序,它的主要作用是把系统 OS拉起来并运行。
-
Linux 内核启动
当内核启动时,设置缓存、被保护存储器、计划列表、加载驱动。当内核完成系统设置时,它首先在系统文件中寻找init.rc 文件,并启动init 进程。
-
init 进程启动
初始化和启动属性服务,并且启动Zygote 进程。
-
Zygote 进程启动
创建Java 虚拟机并为Java 虚拟机注册 JNI方法,创建服务器端 Socket,启动SystemServer 进程。
-
SystemServer 进程启动
启动 Binder 线程池和 SystemServiceManager,并且启动各种系统服务。
-
Launcher启动
被SystemServer进程启动的AMS会启动Launcher,Launcher启动后会将已安装应用的快捷图标显示到界面上。