常用热修复方案以及原理
bsdiff.exe 比对文件不同
bspatch.exe 生成增量包
增量级别更新,应用很广泛,抖音微信都有使用增量更新
所有的热修复都是使用 反射和类加载机制完成热修复,和增量更新的
热修复框架
-
andfix 阿里的以前热修复方案,现在已经废弃
在C++层级替换,所以无需重启应用,不支持资源替换
public class Test{ @MethodReplace(class="con.dabin.test",method="test") public void test() { } }
- 第一步android开发端 使用gradle生成patcheRelease生成patch包
- 移动段从服务端下载patch.jar,包内包含 dex文件,dex文件中是编译后的class文件
- classloader,加载class文件到内存中,使用反射找到方法,根据方法中的 @methodreplace注解 找到要替换的类,要替换的方法。
-
Robust 美团的热修复
字节码自动插桩,会增加包的大小,即时生效,无需重启,不支持资源替换
<