Android中的ClassLoader以及热修复、插件化初探

2021-01-27  本文已影响0人  浩仔_Boy

自己学习笔记,仅供自己参考,如有不对欢迎指正

DexClassLoader和PathClassloader的区别

image.png
image.png

optimizedDirectory必须是一个内部存储路径,无论哪种动态加载,加载的可执行文件一定要存放在内部存储。
DexClassLoader可以指定自己的optimizedDirectory,所以它可以加载外部的dex,因为这个dex会被复制到内部路径的optimizedDirectory;
PathClassLoader没有optimizedDirectory,所以它只能加载内部的dex,这些大都是存在系统中已经安装过的apk里面的。

DexClassLoader: 能够加载未安装的jar/apk/dex
PathClassLoader: 只能加载系统中已经安装过的apk

热修复的原理

利用pathClassLoader 的 对dex 文件进行替换,补丁 dex 文件加载到Element对象,并插入到 dexElement前面,具体还是使用反射

上一篇 下一篇

猜你喜欢

热点阅读