Andfix熱修復框架原理及原始碼解析-下篇
如果沒有看過上篇的建議從上篇看起。先大概回憶下,上一篇分析了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簡單的入門總結。
我們找到檔案開啟。
可以看到它分為Art和Dalvik分別處理,我們art以5.0為例看看。
再看看Dalvik裡面
好了,就分析到這裡了。
相關資料工具及demo下載地址:http://pan.baidu.com/s/1hsdcs7a
轉載請註明轉自:http://blog.csdn.net/u011176685/article/details/50984885
相關文章
- 【Android 熱修復】美團Robust熱修復框架原理解析Android框架
- Android熱更新方案之阿里AndFix 原理以及原始碼解析Android阿里原始碼
- Android熱修復原理(一)熱修復框架對比和程式碼修復Android框架
- Android熱修復原理Android
- 深入探索Android熱修復技術原理讀書筆記 —— 程式碼熱修復技術Android筆記
- CORS原理及@koa/cors原始碼解析CORS原始碼
- InnoDB MVCC實現原理及原始碼解析MVC原始碼
- 2018深入解析Android熱修復技術Android
- 【Mybatis原始碼解析】- 整體架構及原理MyBatis原始碼架構
- 深入探索Android熱修復技術原理讀書筆記 —— 資源熱修復技術Android筆記
- 深入探索Android熱修復技術原理讀書筆記 —— 熱修復技術介紹Android筆記
- 熱修復(一)原理與實現詳解
- 簡單易懂的tinker熱修復原理分析
- JVM CPU Profiler技術原理及原始碼深度解析JVM原始碼
- 筆記 深入探索Android熱修復技術原理筆記Android
- Android進階(八)熱修復基本原理Android
- 深度解析Spring Cloud Ribbon的實現原始碼及原理SpringCloud原始碼
- Android 熱修復Android
- ARouter路由框架原始碼解析路由框架原始碼
- weex eros框架原始碼解析ROS框架原始碼
- EventBus原理與原始碼解析原始碼
- 迷你 JS 框架 Hyperapp 原始碼解析JS框架APP原始碼
- GYHttpMock:使用及原始碼解析HTTPMock原始碼
- ReentrantLock解析及原始碼分析ReentrantLock原始碼
- 手把手帶你打造一個 Android 熱修復框架Android框架
- 效能優化 (九) APP 穩定性之熱修復原理探索優化APP
- Andriod 網路框架 OkHttp 原始碼解析框架HTTP原始碼
- Android 網路框架 Retrofit 原始碼解析Android框架原始碼
- 深入原始碼解析 tapable 實現原理原始碼
- SpringBoot原始碼解析-@ConditionalOnXXX註解原理Spring Boot原始碼
- Netty原始碼解析 -- PoolChunk實現原理Netty原始碼
- Netty原始碼解析 -- PoolSubpage實現原理Netty原始碼
- robust 熱修復實踐
- 一篇文章搞懂熱修復類載入方案原理
- TextWatcher的使用及原始碼解析原始碼
- LinkedList 基本示例及原始碼解析原始碼
- ReentrantLock介紹及原始碼解析ReentrantLock原始碼
- springmvc工作原理及原始碼分析SpringMVC原始碼
- AQS的原理及原始碼分析AQS原始碼