热修复,插件化

热修复,插件化

Posted by pxf on March 5, 2018

热修复,插件化

插件化相关技术,热修补技术是怎样实现的,和插件化有什么区别

相同点:

    都使用ClassLoader来实现的加载的新的功能类,都可以使用PathClassLoader与DexClassLoader

不同点:

    热修复因为是为了修复Bug的,所以要将新的同名类替代同名的Bug类,要抢先加载新的类而不是Bug类,所以多做两件事:在原先的app打包的时候,阻止相关类去打上CLASS_ISPREVERIFIED标志,还有在热修复时动态改变BaseDexClassLoader对象间接引用的dexElements,这样才能抢先代替Bug类,完成系统不加载旧的Bug类.

    而插件化只是增加新的功能类或者是资源文件,所以不涉及抢先加载旧的类这样的使命,就避过了阻止相关类去打上CLASS_ISPREVERIFIED标志和还有在热修复时动态改变BaseDexClassLoader对象间接引用的dexElements.

    所以插件化比热修复简单,热修复是在插件化的基础上在进行替旧的Bug类