动态加载总结篇
动态加载是早几年前的神秘话题,这几年随着技术的开放,动态加载也用的越来越多,做了一些收录,把我之前写的那些渣渣文章做个弥补,再补上另一篇渣渣。
这篇文章没有实质性内容,开源可参考的框架很多,算是做了一点点收录。反正也好久没写博客了,顺带随便写点啥。
常用的动态加载的方法
代理方式,声明一个空壳activity,空壳activity中包含一个proxy activity对象,回调着proxy activity的生命周期。
参考google的multidex的方案,反射BaseDexClassLoader拿到dexElements,将自己的dex文件添加到这个列表里。此方法有个问题就是CLASS_ISPREVERIFIED。
这个方法是我从支付宝中反编译中看的,反射mPackageInfo对象,这个对象是一个LoadedApk,再用反射替换掉这个对象的mClassLoader字段为自己的PathClassLoader,具体介绍请看探究支付宝android客户端的动态加载
初始化的代码要写在Application类的attachBaseContext方法中,不要写在onCreate里,ContentProvider:onCreate()调用优先于Application:onCreate(),所以我关于支付宝的那篇文章,介绍是有点错误的。