Android Pie中zygote进程的执行流程以及文件所在的位置

一入源码深似海,查看源码的思路还是要以追踪函数调用栈为主,不要看某个源码文件的整个分析,不然会搞得完全云里雾里。

1.当没有此进程相关的打印的时候试一下下面的指令,可以调低打印等级
adb shell setprop persist.log.tag V 

2.zygote进程是第一个java进程,其执行流程为
   

int main(int argc, char* const argv[])---->E:\AndroidSrc\pie\frameworks\base\cmds\app_process\app_main.cpp
        runtime.start("com.android.internal.os.ZygoteInit", args, zygote);---->E:\AndroidSrc\pie\frameworks\base\core\jni\AndroidRuntime.cpp
            jclass startClass = env->FindClass(slashClassName);//获取ZygoteInit类的类型
            env->CallStaticVoidMethod(startClass, startMeth, strArray);//调用ZygoteInit.java的静态函数main ,正式进入java的世界
                public static void main(String argv[])--->E:\AndroidSrc\pie\frameworks\base\core\java\com\android\internal\os\ZygoteInit.java
                    zygoteServer.registerServerSocketFromEnv(socketName);  --->E:\AndroidSrc\pie\frameworks\base\core\java\com\android\internal\os\ZygoteServer.java
                    private static Runnable forkSystemServer(String abiList, String socketName,ZygoteServer zygoteServer)--->E:\AndroidSrc\pie\frameworks\base\core\java\com\android\internal\os\ZygoteInit.java   
                        pid = Zygote.forkSystemServer( parsedArgs.uid, parsedArgs.gid,parsedArgs.gids,parsedArgs.runtimeFlags, null,parsedArgs.permittedCapabilities,parsedArgs.effectiveCapabilities);------>E:\AndroidSrc\pie\frameworks\base\core\java\com\android\internal\os\Zygote.java
                    caller = zygoteServer.runSelectLoop(abiList);---->E:\AndroidSrc\pie\frameworks\base\core\java\com\android\internal\os\ZygoteServer.java
                     caller.run();//Android应用进程会走到这儿,执行相应的命令


                    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值