Andfix熱修復框架原理及原始碼解析-下篇

yangxi_001發表於2016-12-02

如果沒有看過上篇的建議從上篇看起。先大概回憶下,上一篇分析了mPatchManager.init("1.0"),addPatch()方法。還有通過分析打補丁工具,瞭解補丁檔案是怎麼生成的。下面就來講講我們如何去讀它。思緒回到Application的loadPatch()方法。

 


這個方法就是遍歷mPatchs,就是上篇介紹的儲存patch的一個集合。根據補丁名找到對應的類,做為引數傳給fix();

 

前面一直提到dexFile,這裡做一個簡單的介紹,它就是被類載入器使用的操作Dex檔案的類。我註釋都寫的很清楚,遍歷dexFile檔案中所有的類, 如果有需要修改的類集合中在這個Dex檔案中找到了一樣的類,則使用loadClass(String, ClassLoader)載入這個類, 然後呼叫fixClass(String, ClassLoader)修復這個類。


親們看註釋吧,更加詳細點。這個方法就是找到有問題的類,和相關方法,作為引數傳給replaceMethod().


繼續看註釋,這裡呼叫了AndFix.addReplaceMethod(src, method).

 

這裡就涉及到jni,jni簡單的入門總結

我們找到檔案開啟。

 

可以看到它分為ArtDalvik分別處理,我們art5.0為例看看。

 

再看看Dalvik裡面

 

好了,就分析到這裡了。

相關資料工具及demo下載地址:http://pan.baidu.com/s/1hsdcs7a

轉載請註明轉自:http://blog.csdn.net/u011176685/article/details/50984885

相關文章