4.2 zygote分析

最后更新于:2022-04-02 05:48:56

Zygote本身是一个Native的应用程序,和驱动、内核等均无关系。根据第3章对于init的介绍我们可以知道,Zygote是由init进程根据init.rc文件中的配置项而创建的。在分析它之前,我们有必要先简单介绍一下“zygote”这个名字的来历。zygote最初的名字叫“app_process”,这个名字是在Android.mk文件中被指定的,但app_process在运行过程中,通过Linux下的pctrl系统调用将自己的名字换成了“zygote”,所以我们通过ps命令看到的进程名是“zygote”。 zygote玩的这一套“换名把戏”并不影响我们的分析,它的原型app_process所对应的源文件是App_main.cpp,代码如下所示: **App_main.cpp** ~~~ int main(int argc, const char* const argv[]) { /* Zygote进程由init通过fork而来,我们回顾一下init.rc中设置的启动参数: -Xzygote/system/bin --zygote --start-system-server */ mArgC= argc; mArgV= argv; mArgLen = 0; for(int i=0; i ';