以下内容大部分总结自《Android进阶解密》
名词解释
名词 | 解释 |
---|---|
init进程 | linux内核加载完成后启动,Linux系统用户空间的第一个进程,入口函数在init.cpp main,是Zygote的父进程 |
属性服务(property_service) | 一个socket的服务端。对ctl. ro. persist. 等不同开头的系统属性分别处理 |
僵尸进程 | 子进程终止但父进程不知道,系统进程表中仍保留子进程的信息,这个子进程则称为“僵尸进程” |
init.rc | 配置脚本。启动Zygote进程的脚本写在这里。 |
Zygote(孵化器) | 进入java层的第一个进程,Android所有进程的父进程 |
关于init.rc
-
启动服务的脚本。Android 8.0后对init.rc进行拆分,每个服务对应一个rc文件。Zygote启动脚本在init.zygoteXX.rc中。(如init.zygote64.rc)
-
以init.zygote64.rc为例,启动zygote的脚本语句如下:
service zygote /system/bin/app_process64 -Xzygote /system/bin --zygote --start-system-server
开机流程流程图
Zygote启动时序图
-
AndroidRuntime.start:cpp。运行时相关,包括启动虚拟机、为虚拟机注册jni方法
-
ZygoteInit.main:java。创建socket等待AMS;启动SystemServer进程
待续...