Android系统从硬件上电到应用启动的完整流程解析,结合系统启动的核心环节与关键进程的交互逻辑!
一、硬件上电与BootLoader启动
1. 电源启动与Boot ROM执行
当设备通电后,处理器从固化在ROM中的引导芯片代码(Boot ROM)开始执行,初始化基本硬件(如内存、时钟),随后加载引导程序BootLoader到RAM并跳转执行。
2. BootLoader的核心作用
BootLoader负责验证系统完整性、加载操作系统内核(Linux Kernel)到内存,并移交控制权。嵌入式设备通常直接通过BootLoader加载内核,而非传统PC的BIOS阶段。
二、Linux内核初始化
1. 内核加载与硬件初始化
Linux内核启动后,初始化CPU调度、内存管理、设备驱动(如显示屏、存储控制器),建立虚拟文件系统(如sysfs、procfs),并挂载根文件系统。
2. 启动首个用户空间进程:init
内核初始化完成后,启动PID为1的init进程,标志着用户空间的开始。init进程读取init.rc配置文件,定义系统服务和进程的启动规则。
SKRoot-SuperKernelRoot-Linux内核级完美隐藏RooT
三、Android系统服务层启动
1. Zygote进程的孵化
Zygote的启动
init进程根据init.rc脚本启动Zygote服务(通过执行/system/bin/app_process),Zygote作为“孵化器”,预加载Java核心类库(如ActivityThread)、Framework资源(如主题、图标)及共享库(如OpenGL),以加速后续应用进程的创建。
关键代码路径
Zygote通过JNI调用ZygoteInit.main()进入Java层,创建Socket服务监听AMS请求,并首次调用forkSystemServer()生成SystemServer进程。
2. SystemServer进程与系统服务
核心服务启动
SystemServer进程启动后,初始化Binder线程池,创建SystemServiceManager,按顺序启动关键服务
AMS(ActivityManagerService):管理应用生命周期。
PMS(PackageManagerService):扫描并安装APK。
WMS(WindowManagerService):管理窗口与界面渲染。
本地服务的加载
启动C++编写的本地服务如SurfaceFlinger(图形合成)和AudioFlinger(音频处理),注册为Binder服务供其他进程调用。
四、用户界面与应用启动
1. Launcher的启动
SystemServer完成服务初始化后,发送systemready广播。AMS接收到广播后,通过Zygote创建新进程并启动Launcher(桌面程序),其作为首个用户交互界面,加载已安装应用的图标。
2. 应用启动流程
用户点击图标:Launcher通过Binder通知AMS启动目标应用。
进程创建与初始化:若应用未运行,AMS请求Zygote通过fork()创建新进程,加载ActivityThread并调用main()方法,初始化应用上下文。
Activity生命周期:通过Instrumentation创建Activity实例,触发onCreate()、onStart()、onResume()等回调,最终显示界面。
五、关键技术与优化
1.Zygote的COW(写时复制)机制
Zygote预加载的类与资源在子进程(如应用进程)中通过内存页共享,减少重复加载开销,显著提升启动速度。
2. 系统服务的依赖管理
SystemServer通过startBootPhase()分阶段启动服务,确保服务间的依赖顺序(如PMS需在AMS之前启动)。
总结
Android启动流程从硬件上电到应用交互,涉及
BootLoader→内核→init→Zygote→SystemServer→Launcher
的链式启动机制,其核心在于通过进程隔离与资源共享实现高效的系统初始化。这一流程不仅体现了Linux内核与Android框架的深度整合,也展示了系统级服务如何协同支撑用户应用的无缝启动。
硬件上电 → Bootloader → Linux内核 → init进程 → Zygote → SystemServer → Launcher → 应用Activity
https://pan.quark.cn/s/4dc6f36ae22c
https://pan.quark.cn/s/3a124612ceb1
https://pan.quark.cn/s/94e874aa45c2#/list/share
原文始发于微信公众号(哆啦安全):Android系统从硬件上电到应用启动的完整流程解析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论