熱修復技術實踐之類加載方案

項目地址
類加載方案的原理是在app重新啓動後讓Classloader去加載新的類。因爲在
app運行到一半的時候,所有需要發生變更的類已經被加載過了,在Android上是
無法對一個類進行卸載的。如果不重啓,原來的類還在虛擬機中,就無法加載新類。
因此,只有在下次重啓的時候,在還沒走到業務邏輯之前搶先加載補丁中的新類,這
樣後續訪問這個類時,就會Resolve爲新類。從而達到熱修復的目的。

將修復好的dex文件push到SD卡,模擬從服務器下載

adb push /Users/keecham/Desktop/classes2.dex /sdcard

複製dex到私有目錄

FileUtils.copyFile(sourceFile, targetFile);

加載修復後的dex文件

FixDexUtils.loadFixedDex(this);

apk 安裝時,系統會使用 PathClassLoader 來加載apk文件中的dex,PathClassLoader的構造方法中,調用父類的構造方法,實例化出一個 DexPathList ,DexPathList 通過 makePathElements 在所有傳入的dexPath 路徑中,找到DexFile,存入 Element 數組,在應用啓動後,所有的類都在 Element 數組中尋找,不會再次加載。

發佈了35 篇原創文章 · 獲贊 2 · 訪問量 4377
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章