Android熱修復技術初覽

2021-07-29 13:51:37 字數 1059 閱讀 1719

首先介紹下google i/o的instant run提出了幾個概念:

但是國內通常所說的「熱修復」指的是不用發布apk包即可達到更新效果。讓應用能夠在無需重新安裝的情況實現更新,幫助應用快速建立動態修復能力。

外掛程式化:乙個程式劃分為不同的部分,以外掛程式的形式載入到應用中去,本質上它使用的技術還是熱修復技術,只是加入了更多工程實踐,讓它支援大規模的**更新以及資源和so包的更新。

在apk輕量而快速公升級時

熱修復是乙個動態修改**與資源的通道,適合輕量而快速的公升級。

遠端除錯

熱修復技術適合於遠端除錯方面。可根據需要對特定的使用者/機型傳送補丁,在android機型碎片化嚴重的今天,非常有助於定點修復問題。

資料統計

可以根據統計需要,針對同一批使用者做多種測試,這時只需要替換不同的補丁即可。

阿里的開源熱修復方案還有dexposed框架,源於手淘。採用的是native hook方案,但是其不支援art,在未來是乙個很大的隱患。暫時不考慮專案中採用。

看下圖各種方案的對比,比較直觀:

下面簡單說說幾大方案各自的原理~

qq空間超級補丁技術採用dex分包方案,使用了多個dex載入的原理。即:把bug方法修復以後,放到乙個單獨的dex裡,並且放在dexelements陣列的最前面,讓虛擬機器去載入修復完後的方法。

當patch.dex中包含test.class時就會優先載入,在後續的dex中遇到test.class的話就會直接返回而不去載入,這樣就達到了修復的目的。

這裡先解釋下hotfix的概念~

阿里andfix熱修復技術提供了一種執行時在native修改filed指標的方式,實現方法的替換,達到即時生效無需重啟,對應用無效能消耗的目的。

後續我們繼續學習熱修復技術~

Android 熱修復總結

平台阿里 andfix 阿里 hotfix1.x nuwa 美團robust 阿里 hotfix2.x 即時生效 yesyes nono yes看情況 效能損耗 較小較小 較大較小 較小較小 補丁包大小 一般一般 較大較小 較小較小 佔rom體積 較小較小 一般較大 較小看情況 接入複雜度 簡單簡單...

Android 熱修復思路整理

流行的熱修復方式 按技術特點劃分 本文採用的熱修復 思路 載入應用程式的classloder classloader classloader context.getclassloader for file file loadeddex 因為系統通過dexclassloder來載入dex,所以需要將新...

Android優化之熱修復

什麼是熱修復呢?熱修復的實現原理 首先,生成新版本和舊版本的差異補丁包檔案 此步驟有點類似於增量更新的第一步 不知不覺中,bug已然修復。阿里的熱修復框架andfix 熱修復有很多方案,其中阿里開源的andfix使用起來比較簡單,而且比較穩定。阿里的andfix框架使用步驟如下 public voi...