熱修復 常見的熱修復框架簡介
阿新 • • 發佈:2018-06-10
des sim size idt source nor inf 美團 clas 常見的幾個熱修復框架的對比
熱修復框架的種類繁多,按照公司團隊劃分主要有以下幾種:
雖然熱修復框架很多,但熱修復框架的核心技術主要有三類,分別是代碼修復、資源修復和動態鏈接庫修復,其中每個核心技術又有很多不同的技術方案,每個技術方案又有不同的實現,另外這些熱修復框架仍在不斷的更新叠代中,可見熱修復框架的技術實現是繁多可變的。
部分熱修復框架的對比如下表所示:
我們可以根據上表和具體業務來選擇合適的熱修復框架,當然上表的信息很難做到完全準確,因為部分的熱修復框架還在不斷更新叠代。
從表中也可以發現Tinker和Amigo擁有的特性最多,是不是就選它們呢?也不盡然,擁有的特性多也意味著框架的代碼量龐大,我們需要根據業務來選擇最合適的,假設我們只是要用到方法替換,那麽使用Tinker和Amigo顯然是大材小用了。另外如果項目需要即時生效,那麽使用Tinker和Amigo是無法滿足需求的。
Tinker、AndFix 等框架的比較
Tinker的功能非常強大,基本除了AndroidManifest.xml文件和tinker本身少數幾個類之外,其他內容都能替換,包括布局、資源但是接入麻煩,上手難度較AndFix高很多。
和Tinker不同, AndFix上手非常容易, 只需寥寥數行代碼即可,但沒有Tinker功能多。由於AndFix實現原理是底層通過c++直接操作指針實現,它可以做到加載補丁後實時生效,但它目前只支持替換方法實現內容,不能增加類也不能增加、修改字段。
Native 系的幾個框架
Java 系的幾個框架
微信的 Tinker 12K【主流】
Tinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstall apk.
大眾點評的 Nuwa 2.9K
Nuwa is a goddess in ancient Chinese mythology best known for repairing the pillar of heaven. 女媧是中國古代神話中的女神,以修復天堂柱而聞名。With this Nuwa project,you can also have the repairing power, fix your android applicaiton without have to publish a new APK to the appstore. 有了這個Nuwa項目,您還可以擁有修復能力,修復您的Android應用程序而無需將新APK發布到應用商店。
美團的 Robust 2.7K
Robust is an Android HotFix solution with high compatibility and high stability. Robust can fix bugs immediately without a reboot.
Robust是一款具有高兼容性和高穩定性的Android HotFix解決方案。Robust可以立即修復錯誤,無需重新啟動。
Qzone超級補丁 HotFix 1.6K
安卓App熱補丁動態修復框架
百度金融的 RocooFix 1.5K
another hotfix framework
餓了麽的 Amigo 1.3K-
A hotfix library for Android platform, and not just this...
美麗說蘑菇街的 Aceso 1K-
A hotfix library for Android
2018-6-9
來自為知筆記(Wiz)
常見的幾個熱修復框架的對比
熱修復框架的種類繁多,按照公司團隊劃分主要有以下幾種:類別 | 成員 |
阿裏系 | AndFix、Dexposed、阿裏百川、Sophix |
騰訊系 | 微信的Tinker、QQ空間的超級補丁、手機QQ的QFix |
知名公司 | 美團的Robust、餓了麽的Amigo、美麗說蘑菇街的Aceso |
其他 | RocooFix、Nuwa、AnoleFix |
雖然熱修復框架很多,但熱修復框架的核心技術主要有三類,分別是代碼修復、資源修復和動態鏈接庫修復,其中每個核心技術又有很多不同的技術方案,每個技術方案又有不同的實現,另外這些熱修復框架仍在不斷的更新叠代中,可見熱修復框架的技術實現是繁多可變的。
部分熱修復框架的對比如下表所示:
特性 | AndFix | Tinker/Amigo | QQ空間 | Robust/Aceso |
即時生效 | 是 | 否 | 否 | 是 |
方法替換 | 是 | 是 | 是 | 是 |
類替換 | 否 | 是 | 是 | 否 |
類結構修改 | 否 | 是 | 否 | 否 |
資源替換 | 否 | 是 | 是 | 否 |
so替換 | 否 | 是 | 否 | 否 |
支持gradle | 否 | 是 | 否 | 否 |
支持ART | 是 | 是 | 是 | 是 |
支持Android7.0 | 是 | 是 | 是 | 是 |
從表中也可以發現Tinker和Amigo擁有的特性最多,是不是就選它們呢?也不盡然,擁有的特性多也意味著框架的代碼量龐大,我們需要根據業務來選擇最合適的,假設我們只是要用到方法替換,那麽使用Tinker和Amigo顯然是大材小用了。另外如果項目需要即時生效,那麽使用Tinker和Amigo是無法滿足需求的。
Tinker、AndFix 等框架的比較
和Tinker不同, AndFix上手非常容易, 只需寥寥數行代碼即可,但沒有Tinker功能多。由於AndFix實現原理是底層通過c++直接操作指針實現,它可以做到加載補丁後實時生效,但它目前只支持替換方法實現內容,不能增加類也不能增加、修改字段。
Tinker | QZone | AndFix | Robust | |
類替換 | yes | yes | no | no |
So替換 | yes | no | no | no |
資源替換 | yes | yes | no | no |
全平臺支持 | yes | yes | yes | yes |
即時生效 | no | no | yes | yes |
性能損耗 | 較小 | 較大 | 較小 | 較小 |
補丁包大小 | 較小 | 較大 | 一般 | 一般 |
開發透明 | yes | yes | no | no |
復雜度 | 較低 | 較低 | 復雜 | 復雜 |
gradle支持 | yes | no | no | no |
Rom體積 | 較大 | 較小 | 較小 | 較小 |
成功率 | 較高 | 較高 | 一般 | 最高 |
註意事項
- 在本地動態執行遠端下發的代碼是極度危險的行為,利用此方法執行非法代碼等或用於繞過 Google Play 等市場的審查是違反相關協議的,也是對用戶極度不負責任的行為。
- 在一些訪問非常密集的地方使用熱更新可能會對效率產生相對比較大的影響,應該避免使用。
- 我們可以對 Java 的 ScriptEngine 進行一些封裝成為一個 HotPatch 類使得它更適合做熱更新的工作。
- 檢查熱更新補丁的管道一定要建立在 https 上,因為下發代碼是極其危險的,如果被劫持,後果是無法想象的。
- 請求時最好自動帶上 Android 版本、手機型號、地區、版本號等信息,以方便更精確地下發,千萬不能下發錯。
- Java在運行時加載對應的類是通過ClassLoader來實現的,ClassLoader本身是一個抽象來,Android中使用PathClassLoader類作為Android的默認的類加載器。
- 我們如果想做hotpatch,一定要保證我們的hotpacth dex文件出現在dexElements列表的前面。
Native 系的幾個框架
阿裏的 Dexposed 3.9K
dexposed enable ‘god‘ mode上帝視角 for single android application.阿裏的 AndFix 6K+【主流】
AndFix is a library that offer hot-fix for Android App.Java 系的幾個框架
微信的 Tinker 12K【主流】
Tinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstall apk.大眾點評的 Nuwa 2.9K
Nuwa is a goddess in ancient Chinese mythology best known for repairing the pillar of heaven. 女媧是中國古代神話中的女神,以修復天堂柱而聞名。With this Nuwa project,you can also have the repairing power, fix your android applicaiton without have to publish a new APK to the appstore. 有了這個Nuwa項目,您還可以擁有修復能力,修復您的Android應用程序而無需將新APK發布到應用商店。美團的 Robust 2.7K
Robust is an Android HotFix solution with high compatibility and high stability. Robust can fix bugs immediately without a reboot.Robust是一款具有高兼容性和高穩定性的Android HotFix解決方案。Robust可以立即修復錯誤,無需重新啟動。
Qzone超級補丁 HotFix 1.6K
安卓App熱補丁動態修復框架百度金融的 RocooFix 1.5K
another hotfix framework餓了麽的 Amigo 1.3K-
A hotfix library for Android platform, and not just this...美麗說蘑菇街的 Aceso 1K-
A hotfix library for Android2018-6-9
來自為知筆記(Wiz)
熱修復 常見的熱修復框架簡介