Android启动流程概览可以分为以下几个阶段:
- Boot ROM阶段 - 硬件初始化
- Bootloader阶段 - 引导加载器
- Kernel阶段 - Linux内核启动
- Init进程阶段 - 系统初始化
- Zygote进程阶段 - 应用程序孵化器
- System Server进程阶段 - 系统服务启动
- Launcher启动阶段 - 桌面应用启动
Framework层面关键组件
第一阶段:Zygote进程启动
核心类和文件:
ZygoteInit.java - Zygote进程主类
ZygoteServer.java - Zygote服务端
Zygote.java - Zygote相关常量和方法
启动流程:
- Zygote进程由init进程启动
- 预加载系统类、资源和共享库
- 启动Socket服务等待应用请求
- fork SystemServer进程
第二阶段:SystemServer进程启动
核心类:
SystemServer.java - 系统服务主入口
ServerThread.java - 系统服务主线程
SystemServiceManager.java - 系统服务管理器
SystemService.java - 系统服务基类
关键服务启动顺序:
Installer - 系统安装监听服务
DeviceIdentifiersPolicyService - 设备标识符策略服务
LightsService - 灯光服务
PowerManagerService - 电源管理服务
ActivityManagerService - 活动管理服务
WindowManagerService - 窗口管理服务
PackageManagerService - 包管理服务
UserManagerService - 用户管理服务
InputManagerService - 输入管理服务
DisplayManagerService - 显示管理服务
第三阶段:ActivityManagerService启动
核心类:
ActivityManagerService.java - 核心的AMS服务
ActivityStackSupervisor.java - 活动栈管理
ActivityStack.java - 活动栈实现
ProcessRecord.java - 进程记录
ActivityRecord.java - 活动记录
主要功能:
- 应用进程管理
- Activity生命周期管理
- 任务栈管理
- 内存管理
第四阶段:PackageManagerService启动
核心类:
PackageManagerService.java - 包管理服务
PackageParser.java - APK解析
Settings.java - 系统设置
PackageInstallerService.java - 安装服务
主要功能:
- APK解析和安装
- 组件信息解析
- 权限管理
- 用户应用管理
第五阶段:Boot完成阶段
核心类:
ActivityThread.java - 应用主线程
ApplicationThreadNative.java - 应用进程与AMS通信
Instrumentation.java - 应用测试和监控
LoadedApk.java - 加载的APK信息
详细启动流程
- Zygote启动
// ZygoteInit.main() - Zygote进程入口
public static void main(String argv[]) {
// 预加载类和资源
preload();
// 启动Zygote服务
startServerSocket();
// fork SystemServer
forkSystemServer();
// 等待客户端请求
runSelectLoop();
}
- SystemServer启动
// SystemServer.main() - 系统服务入口
private void run() {
// 创建SystemServiceManager
mSystemServiceManager = new ServiceManager();
// 启动各种系统服务
startBootstrapServices(); // 引导服务
startCoreServices(); // 核心服务
startOtherServices(); // 其他服务
}
- 关键服务启动
// ActivityManagerService启动
ActivityManagerService mAm = new ActivityManagerService();
mAm.start();
// 完成AMS设置
mAm.setSystemProcess(); // 注册到系统进程
重要Framework类总结
进程管理相关
- ActivityManagerService - 应用生命周期管理
- ProcessRecord - 进程信息记录
- ActivityManager - 应用管理器
包管理相关
- PackageManagerService - 包管理服务
- PackageParser - APK解析器
- PackageManager - 包管理器
窗口管理相关
- WindowManagerService - 窗口管理服务
- WindowState - 窗口状态
- WindowManager - 窗口管理器
内容管理相关
- ContentService - 内容服务
- ContentProvider - 内容提供者
通信相关
- Binder - IPC通信机制
- IBinder - Binder接口
- ServiceManager - 服务管理器
启动完成标志
系统启动完成后会发送以下关键广播:
- ACTION_BOOT_COMPLETED - 系统启动完成
- ACTION_USER_STARTED - 用户启动完成