常用热修复方案以及原理
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 美团的热修复
字节码自动插桩,会增加包的大小,即时生效,无需重启,不支持资源替换//编写的代码 @modify //改动代码后手动添加坠恶用于补丁包生成 public long getIndex() { return 100; } //经过插桩后实际执行的代码 public lo

最低0.47元/天 解锁文章
9736

被折叠的 条评论
为什么被折叠?



