一张图 纵横世界 ,给你一个完整的android启动过程框架 ,还你一个清晰明了的思路。
Untitled Diagram.png
觉得太花哨,那就来个黑白版:
android本身网上讲解的启动流程很多,那为什么我还要画这张图呢? 原因是网上讲的是比较多,但是画出来的图,我在理解的时候,总是有偏差,自己在整理,想给别人传输概念时候,发现网上的那些图总是会带来一些误导。
我在画这张图的时候,里面标注最明显的就是进程,以及一些线程的文字,我想传递出去的就是,虚拟机是在zygote里面,是属于内部的一个实现,然后其他的apk在fork的时候,直接拿到了一个虚拟机。
而我们的AMS PMS这些,我画在了system_server进程里面,标注是线程。让你直观上去看到AMS这些是在system_server进程内部,不会出现理解偏差。
在zygote进程里面,我标注了一些 so jar apk的信息,这些就是在zygote进程启动时候,自己首先加载了一堆库和资源,这样子我们启动apk的时候,从它这里fork的时候,就直接带过去了,这样子我们apk就直接有了一个虚拟机,这样子就能解析执行java语言编出来的dex字节码了。
剩下的就是等你来细细阅读下这张图,有什么疑问,留言,代码GG随时解疑答惑。
网友评论