转载请注明本文出自 clevergump 的博客:http://blog.csdn.net/clevergump/article/details/54782635, 谢谢!
一. 热修复技术简介
什么是热修复技术?
通过向用户下发补丁包的方式, 让应用能够在无需重新安装的情况自动集成补丁包, 实现更新的技术.
二. 热修复技术的优缺点
优点:
- 无需重新发布到应用市场, 节省了从提交应用市场审核到审核通过的时间.
- 用户无需重新安装,只要上线就能无感知地更新.
缺点:
- 补丁只能针对单一客户端版本,随着版本差异变大补丁体积也会增大.
- 补丁不能支持所有的修改,例如AndroidManifest.
- 补丁无论对代码还是资源的更新成功率都无法达到100%.
结论:
热修复技术只适用于特定场景,无法完全代替传统的升级方式.
三. 热修复技术的适用场景
1. 轻量而快速的升级
适用于修改量较少, 补丁包较小的情况。在补丁包极小的情况下,也可以直接使用移动网络下载更新, 这样能达到快速升级、快速验证、缩短发布流程的目的. 注意:是否需要使用用户流量,需要慎重考虑。例如: 下图是微信某次升级试验中, 两种升级方式的对比:
2. 静默远程bug调试和验证
3. 数据统计
如果想对同一批用户做两种测试, 传统方式无法让这批用户去安装两个版本。使用热修复技术,就可以方便地对同一批用户不停地更换补丁, 然后得出不同的测试结果, 进行数据统计和对比分析. 例如: 如果想探究某次技术升级后的用户满意度或bug出现率, 就可以使用AB测试, 只给一部分用户推送升级补丁, 其他用户则依然保持原先的版本, 通过对比这两类用户各自的使用状况, 从而就可以知道这次热修复的内容是否需要继续完善或改进等. 如果发现使用了补丁包的用户的满意度提高了, 或者出现bug的概率降低了, 那么就可以将本次热修复的补丁包下发给所有用户了.
4. 其他
例如: Android Studio 的 Instant Run (热部署) 技术等.
四. 当前主流热修复方案简介及对比
1. 微信Tinker方案
开发团队 | 微信 |
---|---|
方案简介 | 使用 ClassLoader 动态加载多个dex文件,改变dex文件的加载顺序 |