- 插件化:
一个程序划分为不同的部分,以插件的形式加载到应用中去,本质上它使用的技术还是热修复技术,让它支持大规模的代码更新以及资源和SO库的更新,将一个大apk改造成多个小apk,支持在线实时改变APP样式,在线更新添加功能等等(不用重新下载安装包安装)解决应用越来越大导致的各种限制(如65535方法数限制)
- 热修复:
当线上应用出现紧急BUG,为了避免重新发版,并且保证修复的及时性而进行的一项在线推送补丁的修复方案
热修复原理:
热修复原理大都是基于ClassLoader:
Android的ClassLoader分为PathClassLoader和DexClassLoader,它们都继承自BaseDexClassLoader,其中
PathClassLoader用来加载系统类和应用类(也就是加载Dex中的class文件)
DexClassLoader用来从.jar和.apk类型的文件内部加载classes.dex文件(也就是加载所有Dex文件)
Qzone超级热补丁原理:
Qzone热修复方案基于的是android dex分包方案,就是把多个dex文件塞入到app的classloader中,但是android dex拆包方案中的类是没有重复的,如果classes.dex和classes1.dex中有重复的类,当用到这个重复的类的时候,系统会优先选择排在前面的dex文件的类,因此,我们把有问题的类打包到一个dex(patch.dex)中去,然后把这个dex插入到Elements的最前面便完成了热补丁方案(多DEX方案用来解决应用方法数65535的问题,现在Google也官方支持了MultiDex的实现方案。但是,这实在是应用因方法数超出而作出的不得已的下策,因此,热修复或多或少都有性能损耗)<