主要类和代码流程:
init
init.zygote64_32.rc
app_main.cpp:main()
AndroidRuntime.cpp:start()
ZygoteInit.java:main()
---------------:forkSystemServer()
一, init.xxx.rc文件解析
LoadBootScripts(am, sm);
在init启动的第二阶段,通过LoadBootScripts()函数来解析init.rc或者其他重要服务相关的rc配置文件。
static void LoadBootScripts(ActionManager& action_manager, ServiceList& service_list) {
Parser parser = CreateParser(action_manager, service_list);//创建Parser解析对象,如service,on等
std::string bootscript = GetProperty("ro.boot.init_rc", "");
if (bootscript.empty()) {
parser.ParseConfig("/init.rc");