热修复方案选择
市面上出现过的热修复方案很多,较为热门的有QQ空间方案的Nuwa、微信的Tinker、阿里的Andfix、360的RePlugin、美团的Robust。
先来看一下这些项目的现状:
- Nuwa:上次更新日期为2015年12月。
- Tinker:腾讯主推,依然保持活跃。
- Andfix:半年未更新,阿里云开始推Sophix(闭源收费)。
- RePlugin:360主推,社区活跃。
- Robust:美团新宠,活跃中。
Nuwa几乎已停止维护,Andfix也即将被同门Sophix取代,阿里云官网贴出的对比图。
因此,Nuwa、Andfix将不纳入我们的考虑范围,Sophix加入对比队列。
那么,我们需要在 Tinker、RePlugin、Robust、Sophix中选出一个最合适的。挑取几个比较重要的方面,对比如下:
Tinker | RePlugin | Robust | Sophix | 意义 | |
---|---|---|---|---|---|
So替换 | yes | no | yes | 第三方sdk更新 | |
资源替换 | yes | no | yes | 涉及到图片增改的更新 | |
gradle支持 | yes | no | yes | 第三方库更新,版本升级 | |
即时生效 | no | yes | 特定情况支持 | 无需重启App即可修复bug | |
多渠道支持 | 支持 | 支持 | 支持 | 是否能应付章鱼多个渠道 | |
大的第三方后台 | TinkerPatch或Bugly或自搭 | 自搭 | 阿里云 | 免去自搭后台的烦恼 | |
稳定性 | 服务微信数亿用户 | 美团 | |||
Android版本支持 | 2.X-8.X | 2.X-8.X | 2.X-8.X | 能否支持所有章鱼用户 | |
文档 | 丰富 | 完善中 | 丰富 | 丰富的文档易于排查问题 | |
当前版本 | 1.9.1 | 0.4.82 | HotFix 3.2.2 | Api是否会频繁改动,相关参见版本号的文化 | |
是否开源 | yes 16年9月开源,已收获12k Star | yes 17年6月开源,已收获4.6k Star | yes 17年3月开源,已收获2.7k Star | no 17年12月发布,前身为HotFix | 技术开源一定程度上能吸引开发者&减少bug,使用者可以知其然且知其所以然 |
费用 | Bugly提供免费后台或TinkerPatch提供CDN付费后台或自搭 | 自搭后台的管理费用 | 阿里云提供付费服务 | 额外支出与服务享受 | |
其他优势 | 章鱼已接入同门MTA,Bugly | 既具备Tinker的强大功能,也具备Robust场景下的即时生效 |
比较发现,Robust还处于初期且没有大的第三方后台支持,因此被出局。
Sophix半年前改造自HotFix 3.0,尚未经过时间的考验,且未开源,这可能在我们碰到怪异问题时无法定位(因为闭源,所以很难知道问题出在哪里),因此也被出局。
再来看看Tinker,16年9月作为Tencent在GitHub正式公开的第一个项目,功能强大、稳定,且有大的第三方后台支持,无论是文档还是源码,都可以轻松获取,这自然成为我们的首选。
热修复后台选择
选定了Tinker,我们还需要一个后台来下发补丁包。有三种选择:
- 自己搭建补丁后台;
- Bugly免费后台;
- TinkerPatch CDN付费后台。
三者孰优孰劣?我列了个表单进行比较。
自搭后台 | Bugly | TinkerPatch | |
---|---|---|---|
灰度测试 | yes | yes | yes |
条件下发 | 可以做到非常精准 | 粗略 | 可以细化到id |
费用 | 人力与带宽 | 免费 | 约 万日活5000/年 |
费时 | 久 | 接入很快 | 接入较快 |
维护成本 | 高 | 低 | 低 |
管理页面 | 自搭 | Bugly | TinkerPatch |
可以看到,
自搭后台功能最强,但成本高;
Bugly免费但条件下发较为粗略;
TinkerPatch收费但具有更细化的条件下发。
考虑到章鱼现阶段接入热修复主要用于修复线上bug,因此TinkerPatch的条件下发相较Bugly并不算优势,这样一来,Bugly的免费与接入成本(章鱼已经集成了Bugly),最终选定Bugly-Tinker作为章鱼的热修复工具。