阿里
Andfix -> Hotfix -> Spohix
原理:
第一步:通过解析DexFile文件找到dex文件,然后找到dex文件当中class,通过ClassLoader.loadClass()方法找到对应的class.
第二步:将class中BugMethod中的变量与FixMethod中的变量一一对应起来起到修复的作用.
优点:
实时生效,无需重启应用
缺点:
因为各个手机厂商会修改class中对应的方法,所以适配不友好
使用注解:
注解 + 反射 记录信息 RUNTIME
/
美团
robust
原理:
Robust 热更新系统在一个方法的入口处插入一段跳转代码,当发现某个方法出现 bug 就跳转执行补丁中的代码,略过原有代码的执行,否则执行原有方法体逻辑。
使用到字节码插桩技术
优点:
实时生效,无需重启应用
缺点:
使用注解:
注解 + Class插桩 区分 CLASS
/
腾讯
Tinker
原理:
替换整个class
bsdiff:差分计算,生成区别文件
bspatch:差分合成
APK增量更新,下载patch中的补丁包,手机中的apk+patch=fix
优点:
无需考虑手机厂商适配问题
缺点:
无法实时生效,需要重启应用之后生效(因为要加载类,加载过的来是有缓存的)
使用注解:
注解 + APT SOURCE