最近好多人都讨论关于热更新的话题,所以查询了一些资料看看
当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就会忙得焦头烂额:重新打包App、测试、向各个应用市场和渠道换包、提示用户升级、用户下载、覆盖安装。有时候仅仅是为了修改了一行代码,也要付出巨大的成本进行换包和重新发布。
这时候就提出一个问题:有没有办法以补丁的方式动态修复紧急Bug,不再需要重新发布App,不再需要用户重新下载,覆盖安装?答案当然是有的,那就是最近涌现出来得热补丁方案,主要包括淘宝的Dexposed、支付宝的AndFix、QQ空间的ClassLoader、微信的Tinker、Nuwa五种。事实上,Android官方也使用热补丁技术实现Instant Run。它分为Hot Swap、Warm Swap与Cold Swap三种方式,大家可以参考英文介绍,也可以看参考文章中的翻译稿。最新的Instant App应该也是采用类似的原理,但是Google Play是不允许下发代码的,这个海外App需要注意一下。
关于热补丁方案做了如下专题文章推荐,如果大家有更多好的文章,欢迎提交Pull Request,或者Issues
1、 Dexposed、AndFix、ClassLoader等各大热补丁方案分析和比较
主要分析了Dexposed、AndFix、ClassLoader这三种方案的原理原理和各自的优缺点,感觉现在文章可以加入Instant Run和微信的Tinker热补丁方案了
2、Android App热补丁动态修复技术介绍及QQ空间热补丁动态修复技术方案原理
Android QQ空间团队提出了独特的解决方法,该方案基于的是android dex分包方案的。具体大家直接点击原文查看
3、微信Android热补丁实践演进之路
文章介绍了热补丁主要是让应用能够在无需重新安装的情况实现更新,帮助应用快速建立动态修复能力,同时对比了Dexposed、AndFix、QQ空间的ClassLoader 等等的业务局限然后根据微信自身的需求推出了微信自己的热补丁方案Tinker。
4、Alibaba热修复方案系列文章(包含AndFix、Dexposed框架)
Alibaba 出品的热修复方案,主要涉及到AndFix、Dexposed框架的使用和原理分析。
5、Instant Run英文原文(需要***)
6、Instant Run工作原理及用法
第5、第6篇,简单明了的带你看懂Instant Run的运作方式。
7、基于Nuwa实现Android自动化HotFix
8、Android 热修复Nuwa的原理及Gradle插件源码解析