Android Framework启动流程概览

Android启动流程概览可以分为以下几个阶段:

  1. Boot ROM阶段 - 硬件初始化
  2. Bootloader阶段 - 引导加载器
  3. Kernel阶段 - Linux内核启动
  4. Init进程阶段 - 系统初始化
  5. Zygote进程阶段 - 应用程序孵化器
  6. System Server进程阶段 - 系统服务启动
  7. Launcher启动阶段 - 桌面应用启动

Framework层面关键组件

第一阶段:Zygote进程启动

核心类和文件:

  • ZygoteInit.java - Zygote进程主类

  • ZygoteServer.java - Zygote服务端

  • Zygote.java - Zygote相关常量和方法

启动流程:

  1. Zygote进程由init进程启动
  2. 预加载系统类、资源和共享库
  3. 启动Socket服务等待应用请求
  4. fork SystemServer进程
第二阶段:SystemServer进程启动

核心类:

  • SystemServer.java - 系统服务主入口

  • ServerThread.java - 系统服务主线程

  • SystemServiceManager.java - 系统服务管理器

  • SystemService.java - 系统服务基类

关键服务启动顺序:

  1. Installer - 系统安装监听服务

  2. DeviceIdentifiersPolicyService - 设备标识符策略服务

  3. LightsService - 灯光服务

  4. PowerManagerService - 电源管理服务

  5. ActivityManagerService - 活动管理服务

  6. WindowManagerService - 窗口管理服务

  7. PackageManagerService - 包管理服务

  8. UserManagerService - 用户管理服务

  9. InputManagerService - 输入管理服务

  10. DisplayManagerService - 显示管理服务

第三阶段:ActivityManagerService启动

核心类:

  • ActivityManagerService.java - 核心的AMS服务

  • ActivityStackSupervisor.java - 活动栈管理

  • ActivityStack.java - 活动栈实现

  • ProcessRecord.java - 进程记录

  • ActivityRecord.java - 活动记录

主要功能:

  1. 应用进程管理
  2. Activity生命周期管理
  3. 任务栈管理
  4. 内存管理
第四阶段:PackageManagerService启动

核心类:

  • PackageManagerService.java - 包管理服务

  • PackageParser.java - APK解析

  • Settings.java - 系统设置

  • PackageInstallerService.java - 安装服务

主要功能:

  1. APK解析和安装
  2. 组件信息解析
  3. 权限管理
  4. 用户应用管理
第五阶段:Boot完成阶段

核心类:

  • ActivityThread.java - 应用主线程

  • ApplicationThreadNative.java - 应用进程与AMS通信

  • Instrumentation.java - 应用测试和监控

  • LoadedApk.java - 加载的APK信息

详细启动流程

  1. Zygote启动
// ZygoteInit.main() - Zygote进程入口
public static void main(String argv[]) {
    // 预加载类和资源
    preload();
    // 启动Zygote服务
    startServerSocket();
    // fork SystemServer
    forkSystemServer();
    // 等待客户端请求
    runSelectLoop();
}
  1. SystemServer启动
   // SystemServer.main() - 系统服务入口
   private void run() {
       // 创建SystemServiceManager
       mSystemServiceManager = new ServiceManager();
       // 启动各种系统服务
       startBootstrapServices();  // 引导服务
       startCoreServices();       // 核心服务
       startOtherServices();      // 其他服务
   }
  1. 关键服务启动
// 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 - 用户启动完成
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容