Android系统启动

170 阅读1分钟

init进程启动过程

引入:

  1. 启动电源以及系统启动
  2. 引导程序BootLoader
  3. Linux内核启动
  4. init进程启动

主要工作:

  1. 创建和挂载启动所需的文件目录
  2. 初始化和启动属性服务(以键值对的形式记录用户、软件的一些使用信息,用来初始化)
  3. 解析init.rc配置文件并启动Zygote进程

Zygote进程启动过程

主要工作:

  1. 创建AppRuntime并调用其start方法,启动Zygote进程
  2. 创建Java虚拟机并为Java虚拟机注册JNI方法
  3. 通过JNI调用ZygoteInit的main函数进入Zygote的Java框架层
  4. 通过registerZygoteSocket方法创建服务器端Socket,并通过runSelectLoop方法等待AMS的请求来创建新的应用程序进程
  5. 启动SystemServer进程

SystemServer处理过程

主要工作:

  1. 启动Binder线程池,这样就可以与其他进程进行通信
  2. 创建SystemServiceManager,其用于对系统的服务进行创建、启动和生命周期管理
  3. 启动各种系统服务

Launcher启动过程

被SystemServer进程启动的AMS会启动Launcher,Launcher启动后会将已安装应用的快捷图标显示到桌面上