使用方法:
在需要修复的方法上面,加上@MethodReplace注解,给定参数,class和method,表示 该方法替换为 哪个类的哪个方法。
缺陷:修复粒度为:method. AndFix只能以方法为粒度去修复bug。作用有限,针对大范围的类替换和资源替换,那就无能为力了。
Robust 是 即时生效的Java层实现的热修复实现方案.
美团的Robust方案,是参考了谷歌的InstantRun方案(之前在androidStudio里面有这个选项,可以选择打开instant run运行app)的思路而设计出来的。
其主要设计思想就是一句话:编译打包时,在程序的某些方法里面,都插入一段代码(全自动操作):
当
changeQuickRedirect
不为空的时候,该方法就会命中if(changeQuickRedirect!=null)
,从而执行修复的实现代码。当为空的时候,则正常执行原逻辑。
而平时我们自己编码,只需要加上一个
@modify
注解,来标记这个方法需要打补丁包,也就是需要插入上面这个if(changeQuickRedirect!=null)
代码段。
为什么它可以即时生效?