Android優化之熱修復

2021-07-29 21:00:24 字數 1201 閱讀 7403

什麼是熱修復呢?

熱修復的實現原理

首先,生成新版本和舊版本的差異補丁包檔案(此步驟有點類似於增量更新的第一步);

不知不覺中,bug已然修復。

阿里的熱修復框架andfix

熱修復有很多方案,其中阿里開源的andfix使用起來比較簡單,而且比較穩定。
阿里的andfix框架使用步驟如下:

public

void

show(view v)

//經反覆測試,0.5的版本不如0.4的版本穩定,因此我們用穩定的版本

//compile 'com.alipay.euler:andfix:0.5.0@aar'

compile 'com.alipay.euler:andfix:0.5.0@aar'

新增載入patch檔案的**:

public

class

extends

@override

public

void

oncreate()

} catch (ioexception e)

}}

此時,將帶有bug的**匯出乙份簽名過的apk檔案,命名為bug.

然後,我們在**中修復bug,再重新使用相同的簽名匯出乙份apk檔案,命名為fix.

現在,我們將2個apk檔案和簽名檔案一同複製到andfix-master\tools\apkpatch-1.0.3目錄下,使用apkpatch命令產生出patch檔案,命令如下:

apkpatch -f fix.apk -t bug.apk -o bug_fix -k test.jks -p

111111

-a test -e

注意:你可能擔心補丁檔案放在sd卡上不安全,萬一被使用者刪除了,不就又回到了錯誤的**嗎?
阿里的andfix已經考慮了該問題,我們可以嘗試刪除sd卡的patch檔案,你會發現程式的bug仍然被修復了。這是因為andfix框架在第一次載入補丁檔案的時候,將其複製到了/data/data/包名/file目錄下,可以去該目錄找到patch檔案。

其他的熱修復框架

droidfix,hotfix,nuwa

綜合比較來看:andfix是穩定性,易用性最好的。

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熱修復原理

修復主要是兩種方案,一種是底層替換方案,一種是類載入方案.這兩種方案各有優劣 底層替換方案是在已經載入了的類中直接替換原有方法,實在原來類的基礎上修改.因此無法實現對原有類的方法和字段的增減,因為這樣將破壞原有的類結構 一旦補丁類中出現了方法的增減,會破壞這個類以及整個dex的方法數的變化.方法數的...