Android插件化原理

参考:https://blog.csdn.net/yulong0809/article/details/59113935

使用的技术:

原理:代理、hook、反射

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已达到欺骗系统去检查的目的.

 

posted @ 2018-04-24 14:29  fangFXQ  阅读(270)  评论(0)    收藏  举报