android 启动流程

1. Android架构介绍

Android的架构可以从架构图得知,主要分四层:

image.png
image.png

2. Android启动概述

概述:Loader > Kernel > Native > Framework > Application

细分:BootRom > Bootloader > Kernel > Init > Zygote > SystemServer > Launcher

Loader层主要包括Boot Rom和Boot Loader

Kernel层主要是Android内核层

Native层主要是包括init进程以及其fork出来的用户空间的守护进程、HAL层、开机动画等

Framework层主要是AMS和PMS等Service的初始化

Application层主要指SystemUI、Launcher的启动

3. BootLoader介绍

Bootloader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。

4. Kernel初始化介绍

Kernel初始化可以分成三部分:zImage解压缩、kernel的汇编启动阶段、Kernel的C启动阶段

内核启动引导地址由bootp.lds决定,内核启动的执行的第一条的代码在head.S文件中,主要功能是实现压缩内核的解压和跳转到内核vmlinux内核的入口

5. Init初始化介绍

init进程是Linux内核启动后创建的第一个用户空间的进程,init在初始化过程中会启动很多重要的守护进程。

6. Zygote启动介绍

在init执行过程中,在on boot阶段,会trigger zygote-start,on zygote-start会根据当前的加密状态选择启动服务

image.png

7. SystemServer启动介绍

SystemServer需要从Zygote fork SystemServer开始分析,主要是设置参数,然后调用Zygote的forkSystemServer方法,再判断是否有SecondaryZygote启动,有则等待其启动,无则返回

ActivityManagerService启动

PackageManagerService启动

8. Launcher启动介绍

SystemUI启动

Launcher启动

更详细的请看:https://www.jianshu.com/p/657336b545bd

你可能感兴趣的:(android 启动流程)