Android热补丁(热修复)从2016年微信的Tinker开源后掀起了一个热潮。时隔一年,阿里推出《深入探索android热修复技术原理》技术书籍,在推广其Sophix的同时非常详细地描述了其方案的实现过程,以及遇到的各种坑,引来大家的关注与分析。可以看到大公司纷纷推出自己的热补丁方案,大大小小的应用,都开始尝试在现有产品中集成或修改使用。
面对热补丁给人的美好愿景,相信大多数开发、运维人员都会为之所动。我们的产品也期望加入这一功能,但是在一段时间的测试和方案分析后,发现理想很丰满,现实却很骨感。本文在简单分析主流的热补丁原理后,抛出一些自己想到或遇到的问题作为思考点,供看到的人参考。
热补丁概念
热补丁,百科中定义为“热补丁(hotfix),又称为patch,指能够修复软件漏洞的一些代码,是一种快速、低成本修复产品软件版本缺陷的方式。”,微信开发者定义为,“让应用能够在无需重新安装的情况实现更新,帮助应用快速建立动态修复能力”。总的来说,在Android上的期望是,在无需打扰用户手动安装的情况下,实现应用的更新。
从字面理解来看,当应用出现严重问题需要立即修复,只需下发补丁包,即可快速将问题修复,既不打扰用户,也可快速修复问题。然后各种减少崩溃率,提升用户留存等等。再激进一些,直接引申为热更新,快速升级应用,岂不是更美好。但你大致理解热补丁的原理和限制后,再结合应用的实际情况,看看这些方案对你的实际意义。《微信Android热补丁实践演进之路》也给了很好的分析和说明。