文章大纲
- 引言
- 一、Android 系统启动流程概述
- 1、手机电源被打开时,首先是引导进入BootLoader分区
- 2、BootLoader分区加载Linux 内核
- 3、内核解析执行init.rc脚本并启动进程id为1 的init进程
- 4、init进程初始化各种Android系统服务、ServiceManager以及Zygote 进程孵化器
- 5、Zygote 创建Android虚拟机、启动SystemServer 服务进程以及系统服务相关的JNI动态注册
- 6、通过SystemServer服务进程(system_server)打开Binder线程池并启动SystemServeiceManager
- 7、SystemServeiceManager 启动具体的Android 系统服务
- 8、最后通过AMS 启动Launcher App。
- 二、Launcher 启动新App进程概述
引言
一、Android 系统启动流程概述
1、手机电源被打开时,首先是引导进入BootLoader分区
此时加载定制厂商绝大部分的系统设备和初始化代码
2、BootLoader分区加载Linux 内核
主要是完成内存、IO设备等初始化工作。
3、内核解析执行init.rc脚本并启动进程id为1 的init进程
4、init进程初始化各种Android系统服务、ServiceManager以及Zygote 进程孵化器
Zygote 受精卵通过细胞分裂产生的新细胞起初在形态、结构方面相似,都具有分裂能力,在发育过程中这些细胞各自具有了不同的功能如保护、营养、输导等功能,形态结构也发生了变化,即细胞分化从而形成了不同的细胞群,从名字上我们可以窥见Zygote 的功能和特点,这也是阅读源码的一种小技巧。
Android系统中的所有应用进程都是由Zygote fork得到的。
5、Zygote 创建Android虚拟机、启动SystemServer 服务进程以及系统服务相关的JNI动态注册
6、通过SystemServer服务进程(system_server)打开Binder线程池并启动SystemServeiceManager
7、SystemServeiceManager 启动具体的Android 系统服务
SystemSeviceManager 启动ActivityManagerService、PackageManagerServeice、WindowManagerService等等。
8、最后通过AMS 启动Launcher App。
二、Launcher 启动新App进程概述
未完待续…