1. 程式人生 > >熱修復 常見的熱修復框架簡介

熱修復 常見的熱修復框架簡介

des sim size idt source nor inf 美團 clas

常見的幾個熱修復框架的對比

熱修復框架的種類繁多,按照公司團隊劃分主要有以下幾種:
類別成員
阿裏系AndFix、Dexposed、阿裏百川、Sophix
騰訊系微信的Tinker、QQ空間的超級補丁、手機QQ的QFix
知名公司美團的Robust、餓了麽的Amigo、美麗說蘑菇街的Aceso
其他RocooFix、Nuwa、AnoleFix

雖然熱修復框架很多,但熱修復框架的核心技術主要有三類,分別是代碼修復、資源修復和動態鏈接庫修復,其中每個核心技術又有很多不同的技術方案,每個技術方案又有不同的實現,另外這些熱修復框架仍在不斷的更新叠代中,可見熱修復框架的技術實現是繁多可變的。
部分熱修復框架的對比如下表所示:
特性AndFixTinker/AmigoQQ空間Robust/Aceso
即時生效
方法替換
類替換
類結構修改
資源替換
so替換
支持gradle
支持ART
支持Android7.0
我們可以根據上表和具體業務來選擇合適的熱修復框架,當然上表的信息很難做到完全準確,因為部分的熱修復框架還在不斷更新叠代。

從表中也可以發現Tinker和Amigo擁有的特性最多,是不是就選它們呢?也不盡然,擁有的特性多也意味著框架的代碼量龐大,我們需要根據業務來選擇最合適的,假設我們只是要用到方法替換,那麽使用Tinker和Amigo顯然是大材小用了。另外如果項目需要即時生效,那麽使用Tinker和Amigo是無法滿足需求的。

Tinker、AndFix 等框架的比較

Tinker的功能非常強大,基本除了AndroidManifest.xml文件和tinker本身少數幾個類之外,其他內容都能替換,包括布局、資源但是接入麻煩,上手難度較AndFix高很多。
和Tinker不同, AndFix上手非常容易, 只需寥寥數行代碼即可,但沒有Tinker功能多。由於AndFix實現原理是底層通過c++直接操作指針實現,它可以做到加載補丁後實時生效,但它目前只支持替換方法實現內容,不能增加類也不能增加、修改字段。

TinkerQZoneAndFixRobust
類替換yesyesnono
So替換yesnonono
資源替換yesyesnono
全平臺支持yesyesyesyes
即時生效nonoyesyes
性能損耗較小較大較小較小
補丁包大小較小較大一般一般
開發透明yesyesnono
復雜度較低較低復雜復雜
gradle支持yesnonono
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 Android
技術分享圖片
2018-6-9

來自為知筆記(Wiz)

熱修復 常見的熱修復框架簡介