Android      aosp启动流程5-init.rc内容执行顺序   
文章目录  [隐藏]

参考:
https://blog.csdn.net/u013028621/article/details/116271537
https://blog.csdn.net/nanyou519/article/details/104953960
http://www.javashuo.com/article/p-svltvgwh-rx.html

上文:http://www.gaohaiyan.com/4047.html

这里还是只看 system/core/rootdir/init.rc

当LoadBootScripts解析完后,ActionManager就开始启动各个指令。
下面代码明确的触发了3个指令:early-init、init、late-init:


1.early-init

这里是为Android做一些初始化操作,创建一些属性文件、目录、设定目录权限、启动服务等。后面的2个section,还会根据手机处理器位数启动特定服务。


2.init

同样是创建一些属性文件、目录、设定目录权限、启动服务等。后面的section中property:ro.debuggable=1指如果开启了调试模式,还会启动console服务。


3.late-init

这个厉害了,启动了一串其它Action。关注“trigger zygote-start”一项触发新的Action。


4.zygote-start

名称为zygote-start的action有6项。前3个用于挂载特定目录,是并列关系,对应“persist.sys.fuse”的不同情况;后3个用于下一步启动zygote进程,也是并列关系,对应“ro.crypto.state”的不同情况。看以“start”指令的Command,“start zygote”表示启动zygote服务(进程)。


5.service zygote

Android 5.0以后,Android开始支持64位编译。
init.rc头部引入了带有“关键字”的其它rc:“import /system/etc/init/hw/init.${ro.zygote}.rc”,但是在aosp源码的这个目录下并没有相关文件。和init.rc同目录下却有这么几个:
system/core/rootdir/init.zygote32.rc --------- > 对应32位处理器。没有“service zygote_secondary”
system/core/rootdir/init.zygote32_64.rc ---- > 32位为主,64位为辅(如果product的cpu是32位,顺便支持64位app?)。有
system/core/rootdir/init.zygote64.rc --------- > 64位处理器,没有“service zygote_secondary”
system/core/rootdir/init.zygote64_32.rc ---- > 64位为主,32位为辅。有
以MiNote3+lineageos18.1为例,对应文件的目录:

看一下init.zygote64_32.rc的内容:

可见,zygote服务的启动文件是 /system/bin/app_process64 。



- end

承接App定制、企业web站点、办公系统软件 设计开发,外包项目,毕设