init–android系统中的第一个进程
内核启动完成后,init进程通过解析脚本init.rc启动关键的守护进程和系统服务。如下可看到很多的init相关的配置文件,其中包括zygote(手机系统中的init.zygote64_32.rc、init.zygote32.rc文件)。


通过dmesg |grep zygote查看相关的启动信息:

zygote–是android应用程序的孵化器,大多数应用程序是从该程序fork出来的。
本身是java语言,因此运行则需要虚拟机环境。
进程app_process是zygote的载体,源码/AOSP/frameworks/base/cmds/app_process/app_main.cpp
该文件中的main函数会解析zygote启动命令参数--zygote --start-system-server ....,并最终调用AndroidRuntime的start函数,从下面代码可以看出,zygote的入口"com.android.internal.os.ZygoteInit",AndroidRuntime的start负责启动并管理android虚拟机。

本文介绍了Android系统中init作为第一个进程的启动,接着详细阐述了zygote作为应用程序孵化器的角色,以及AndroidRuntime如何启动和管理虚拟机。通过5个关键步骤深入讲解了虚拟机的启动过程,包括startVM、JNI_CreateJavaVM、虚拟机创建后的回调、注册native函数以及执行zygoteInit的main函数。

18万+

被折叠的 条评论
为什么被折叠?



