熱修復方案選擇
市面上出現過的熱修復方案很多,較爲熱門的有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作爲章魚的熱修復工具。