=========================================================================
-
严重的Bug,需要立即解决,而不用重新打包上架。
-
解决版本升级率不高,Bug会一直影响不升级版本的用户。
-
实现小功能短时间版本覆盖,如节日活动。
1.2.1. 主流框架
| 派系 | 框架 |
| — | — |
| 阿里系 | AndFix⚠️、Dexposed⚠️、HotFix⚠️、Sophix |
| 腾讯系 | Tinker、超级补丁、QFix |
| 知名公司 | 美团Robust、饿了么Amigo⚠️、蘑菇街Aceso⚠️ |
| 其他 | RocooFix⚠️、Nuwa⚠️、AnoleFix⚠️ |
1.2.2. 框架对比
| 特性 | Sophix | Tinker | 超级补丁 | Robust |
| — | — | — | — | — |
| 即时生效 | 支持 | 不支持 | 不支持 | 不支持 |
| 方法替换 | 支持 | 支持 | 支持 | 支持 |
| 类替换 | 支持 | 支持 | 支持 | 不支持 |
| 类结构修改 | 支持 | 支持 | 不支持 | 不支持 |
| 资源替换 | 支持 | 支持 | 支持 | 不支持 |
| so替换 | 支持 | 支持 | 不支持 | 不支持 |
| 补丁包大小 | 较小 | 较小 | 较大 | 一般 |
| 性能损耗 | 较小 | 较大 | 较大 | 较小 |
| 侵入式打包 | 无侵入 | 侵入 | 侵入 | 侵入 |
==========================================================================
代码修复主要有3中方案:类加载方案、底层替换方案、Instant Run方案。
采用类加载方案的主要是 Tinker、超级补丁、QFix、Amigo 和 Nuwa 等。
2.1.1. Dex 分包机制
【方法数 65536 限制】
由于 DVM 指令集的方法调用指令 i