0%

Dex动态加载关键函数调用链

  • 写在前面: 最近实在是太忙了,本来说好上个周上完课之后就发篇帖子的,但是手头上一直有事,就一直没发,今天稍微整理了一下也不写具体细节了,就只是简单的分享几张我整理的图片吧,具体流程还是看源码吧。

    Android 4.4下Dex动态加载

    在Android4.4之前,Android是基于Dalvik虚拟机实现的,如果想要实现动态的dex的加载,正常来说就得借助DexClassLoader,DexClassLoader加载dex的具体流程,不再赘述,直接上图

    Android 8.0下Dex动态加载

    在Android4.4开始,Android引入Art虚拟机,大大加快了Android应用的运行速度,此时Dex的动态加载主要还是通过DexClassLoader进行加载,只是so层基于Art重写了,这里基于Android 8.0做了整理,注意!!!这个整理是基于禁用了dex2oat的流程,上图!

    在Android 8.0之后,Android又引入了InMemoryDexClassLoader机制,实现了直接从内存中加载dex的方式,这样也实现了Dex的动态加载,上图

  • 写在后面,以上所有图,都是上完@hanbingle师傅的课程后,自己看源码后整理的,如果有错误,欢迎指摘;最后在这里感谢@hanbingle师傅的指导和鼓励。