Android开机流程
Android开机流程
Zygote进程
在init.rc中有
service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
zygote进程通过init进程启动,zygote进程就奠定了Android的基础。
从zygote的main()开始,见/frameworks/base/cmds/app_process/app_main.cpp
int main(int argc, const char * const argv[])
{
......
if(0 == strcmp("--zygote", arg)){
......
runtime.start("com.android.internel.os.ZygoteInit",
startSystemServer);
......
}
接下来运行/frameworks/base/core/jni/AndroidRuntime.cpp的start()
void AndroidRuntime::start(const char * className, const bool startSystemServer)
{
......
classNameStr = env->NewStringUTF(className);
......
startMeth = env->GetStaticMethodID(startClass, "main",
"([Ljava/lang/String;)V");
......
}
因此运行/frameworks/base/java/com/android/internal/os/ZygoteInit.java的main().
public static void main(String argv[]){
......
registerZygoteSocket();
preloadClasses();
if(argc[1].equals("true")){
startSystemServer();
}
......
}
|
评论暂时关闭