Android系统启动流程
Android
系统架分为应用层,
framework
层,系统运行库层(
Native)
,
Linux
内核层 启动按照一个流程:
Loader- >kernel->framework->Application来进行的
1.Bootloader引导
当电源按下时,引导芯片代码 从
ROM (4G)
开始执行。
Bootloader
引导程序把操作系统映像文件拷贝到
RAM
中 去,然后跳转到它的入口处去执行,
启动
Linux
内核。
Linux kernel
内核启动
,
会做设置缓存
,
加载驱动等一些列操作
当内核启动完成之后
,
启动
init
进程
,
作为第一个系统进程
,
init
进程从内核态转换成用户态。
2.init进程启动
fork
出
ServerManager
子进程。
ServerManager
主要用于管理我们的系统服务,他内部存在一个
server
服务列表,这个列表中存储的就是那些已经注册的系统服务。
解析
init.rc
配置文件并启动
Zygote
进程
3.Zygote进程启动
孵化其他应用程序进程,所有的应用的进程都是由
zygote
进程
fork
出来的。 通过创建服务端
Socket,
等待
AMS
的 请求来创建新的应用程序进程。
创建
SystemServer
进程
,
在
Zygote
进程启动之后
,
会通过
ZygoteInit
的
main
方法
fork
出
SystemServer
进程
4.SystemServer进程启动
创建
SystemServiceManager
,它用来对系统服务进行创建、启动和生命周期管理。
ServerManager.startService
启动各种系统服务:
WMS/PMS/AMS
等,调用
ServerManager
的
addService
方, 将这些Service
服务注册到
ServerManager
里面
启动桌面进程,这样才能让用户见到手机的界面。
5.Launcher进程启动
开启系统
Launcher
程序来完成系统界面的加载与显示。