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
';