Launcher启动流程分析
我们知道android系统是运行在Linux内核上,整个launcher的启动流程如图所示,接下来我们一步一步进行分析。
【init进程】
Linux内核启动后巡行的第一个进程是init。这个进程是一个守护进程。生命周期贯穿整个Linux内核 运行的始终。
我们知道android系统是运行在Linux内核上的所以google实现了android系统的init进程。
init进程主要做了三件事:
创建一些文件夹并挂在设备
初始化和启动属性服务
解析init.rc配置文件并启动zygote进程
【Zygote孵化器】
创建JavaVm(java虚拟机),应用程序进程,运行系统的关键服务,systemservice进程
它是通过fock(复制进程)的形式来创建应用程序和systemservice进程
sygote在启动时会创建javaVm,所以fock创建的应用进程和systemserver进程内部可以获取一个javaVm的实例拷贝。
Zygote孵化器做了什么:
创建AppRuntime并调用start方法,启动zygote进程。
创建JavaVM并为JVM注册JNI。
通过JNI调用zygoteInit的main函数进入zygote的Java框架层
通过registerzygotes