最近开始学习init启动过程,网上大部分资料都是4.*的.
在4.*中init.rc文件中有on boot部分,在该部分有class_start main这样的命令,这样在init.c的main中就可以添加到action_queue中以便后面执行do_class_start函数,最终创建app_process.
但是在5.*系统中,init.c的main函数中并没有将包含class_start main的on动作添加到action_queue中,那么5.*中到底是如何启动zygote的呢?(5.*中的on boot中并没有class_start main只有class_start core)
向大家请教,谢谢!
------解决思路----------------------
会有类似的条件在init.rc里面:
on fs
mount_all /fstab.conf
mount_all里面会触发nonencrypted的action
on nonencrypted
class_start main
class_start late_start
------解决思路----------------------
on nonencrypted
class_start main
class_start late_start
.....
on property:vold.decrypt=trigger_restart_min_framework
class_start main
on property:vold.decrypt=trigger_restart_framework
class_start main
class_start late_start
mount_all 中会根据具体的文件系统加密情况触发上面的action或者trigger