BootLoader
设备开机时,首先加载引导加载程序(BootLoader),加载相应的操作系统内核。
Linux内核启动
Bootloader 加载 Linux内核,并将控制权转交给内核。内核负责初始化硬件(如 CPU、内存、存储设备等)并挂载根文件系统。
Init进程启动
init
是Android的第一个用户空间进程,PID为1。它负责加载系统的各种服务和进程。它会启动Zygote
进程。
Zygote进程启动
zygote
是 Android 应用进程的孵化器,它负责加载 Android 框架和应用程序的共享库,优化内存使用。
Forking
进程:当有新的应用启动请求时,zygote 会通过 fork() 创建新的应用进程,而不是重新加载整个应用框架,这样可以加快应用启动速度。
SystemServer启动
zygote
启动 SystemServer 进程,该进程是 Android 系统中管理各种服务的核心。
服务注册:SystemServer 会启动并注册多个核心服务(如 ActivityManagerService、WindowManagerService、PackageManagerService 等),负责管理应用程序和系统资源。
Launcher启动
Launcher
是 Android 系统的主界面,用户可以在此界面上访问和启动应用程序。
启动过程:Launcher
的启动过程由 ActivityManagerService
控制,会创建一个 Launcher 进程并启动其主界面(MainActivity)。