zygote启动时由init解析init.rc创建。
zygote创建dalvikVM,注册native method,预加载类及库。
之后zygote负责创建systemserver进程及其他安卓进程。
查看 app_process(即zygote)入口代码
init解析init.rc
启动 /system/bin/app_process,service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
app_process用法:
Usage: app_process [java-options] cmd-dir start-class-name [options]
创建AppRuntime实例,根据参数,设置进程名为zygote,runtime.start("com.android.internal.os.ZygoteInit", args); //args: <"start-system-server",>
JniInvocation::Init() //load library
startVM() //init vmopen libart.so
parse options...jint JniInvocation::JNI_CreateJavaVM()
startReg(JNIEnv* env) //register android native methods, located in frameworks/base/core/jni/
call com.android.internal.os.ZygoteInit.main()
registerZygoteSocket //for start apps command from systemserverpreload //preload classes and libsstartSystemServer //start system service process
Zygote.forkSystemServer
runSelectLoop
selectReadableSocketZygoteConnection.runOnce //read command, fork new process
Zygote.forkAndSpecialize
zygote启动时由init解析init.rc创建。
zygote创建dalvikVM,注册native method,预加载类及库。
之后zygote负责创建systemserver进程及其他安卓进程。
查看 app_process(即zygote)入口代码
init解析init.rc
启动 /system/bin/app_process,service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
app_process用法:
Usage: app_process [java-options] cmd-dir start-class-name [options]
创建AppRuntime实例,根据参数,设置进程名为zygote,runtime.start("com.android.internal.os.ZygoteInit", args); //args: <"start-system-server",>
JniInvocation::Init() //load library
startVM() //init vmopen libart.so
parse options...jint JniInvocation::JNI_CreateJavaVM()
startReg(JNIEnv* env) //register android native methods, located in frameworks/base/core/jni/
call com.android.internal.os.ZygoteInit.main()
registerZygoteSocket //for start apps command from systemserverpreload //preload classes and libsstartSystemServer //start system service process
Zygote.forkSystemServer
runSelectLoop
selectReadableSocketZygoteConnection.runOnce //read command, fork new process
Zygote.forkAndSpecialize