Android插件化原理
参考:https://blog.csdn.net/yulong0809/article/details/59113935
使用的技术:
1、 首先我们通过DexClassloader创建一个我们自己的DexClassloader对象去加载我们的插件apk,因为之前分析过,只有DexClassloader才能加载其他的dex文件
2、拿到宿主apk里ClassLoader中的pathList对象和我们Classloader的pathList,因为最终加载时是执行了pathList.findClass方法
3、然后我们拿到宿主pathList对象中的Element[]和我们创建的Classloader中的Element[]
4、因为我们要加入一个dex文件,那么原数组的长度要增加,所有我们要新建一个新的Element类型的数组,长度是新旧的和
5、将我们的插件dex文件和宿主原来的dex文件都放入我们新建的数组中合并
6、将我们的新数组设值给pathList对象
7、代理系统启动Activity的方法,然后将要启动的Activity替换成我们占坑的Activity已达到欺骗系统去检查的目的.
浙公网安备 33010602011771号