Android插件化和熱修復,必定是未來Android開發領域發展趨勢,網絡上關于這方面的視頻教程,有慕課網的[Android應用發展趨勢必備武器 熱修復與插件化 ](http://coding.imooc.com/class/106.html)、菜鳥窩的[熱修復和插件化專題』-資深工程師成長計劃系列課程 ](http://www.cniao5.com/course/10139)、以及動腦學院的公開課[Android編程熱修復技術講解](https://v.qq.com/x/page/v03181refin.html?),暫不且論這些課程孰好孰壞,任何一個都有可取點。
#### **動態加載**
引用互動百科的介紹——[動態加載](http://www.baike.com/wiki/動態加載)
動態加載(英語:Dynamic Loading)是一種機制,它能使計算機程序可以在運行時加載一個庫(或者其他二進制對象)到內存中,檢索庫中函數和變量的地址,執行這些函數或訪問這些變量并能將庫從內存中卸載。不同于靜態鏈接和加載時鏈接,這種機制允許計算機程序在沒有某些庫的情況下啟動、發現可用的庫并獲得額外的功能。
#### **熱修復與插件化的對比**
* **共同原理**:
都引用動態加載技術。
都使用ClassLoader來實現的加載的新的功能類,都可以使用PathClassLoader與DexClassLoader
* **不同的是**:
* 熱修復因為是為了修復Bug的,所以要將新的同名類替代同名的Bug類,要搶先加載新的類而不是Bug類,所以多做兩件事:在原先的app打包的時候,阻止相關類去打上CLASS_ISPREVERIFIED標志,還有在熱修復時動態改變BaseDexClassLoader對象間接引用的dexElements,這樣才能搶先代替Bug類,完成系統不加載舊的Bug類
* 而插件化只是增肌新的功能類或者是資源文件,所以不涉及搶先加載舊的類這樣的使命,就避過了阻止相關類去打上CLASS_ISPREVERIFIED標志和還有在熱修復時動態改變BaseDexClassLoader對象間接引用的dexElements
所以插件化比熱修復簡單,熱修復是在插件化的基礎上在進行替換舊的Bug類
>[warning] **注**:上面只是網絡上個人見解,不是標準答案
下面都是網絡上摘抄的文章
* [Android插件化框架和熱修復技術的資料收集和匯總](https://www.figotan.org/2016/08/12/android-plugin-and-hotfix-collections/)
* [Android熱修復技術總結](http://www.mfsun.com/thread-68588-1-1.html#250039-tsina-1-7937-fe2f74577a6a764e92dd1638b6c14edd)
* [Android 插件技術實戰總結](http://mp.weixin.qq.com/s/1p5Y0f5XdVXN2EZYT0AM_A)
* [微信 Tinker 負責人張紹文關于 Android 熱修復直播分享記錄](https://www.diycode.cc/topics/231)
* [Android熱修復技術總結](http://www.mfsun.com/thread-68588-1-1.html#250039-tsina-1-7937-fe2f74577a6a764e92dd1638b6c14edd)
* [美團Android DEX自動拆包及動態加載簡介](https://tech.meituan.com/mt-android-auto-split-dex.html)
* [Android中插件開發篇總結和概述](http://blog.csdn.net/jiangwei0910410003/article/details/48104581)
* 對于Android底層的研究,可以參考下面的文章
* 包建強的書籍[APP研發錄](https://cread.jd.com/read/startRead.action?bookId=30207396&readType=1)以及他的系列文章---->[寫給Android App開發人員看的Android底層知識](http://www.cnblogs.com/Jax/p/6864103.html#3696090)
* [深入理解Android系統](http://www.hmoore.net/alex_wsc/androidsystem/403518)
* [Android 系統源代碼情景分析](http://www.hmoore.net/alex_wsc/android_source/401641)
**周圣韜的博客文章之插件化系列**
[幾篇最近看的Android 插件+打包文章記錄](http://blog.csdn.net/yzzst/article/details/44960821)
[Android插件開發初探——基礎篇](http://blog.csdn.net/yzzst/article/details/45582315)
[Android插件開發初探——分析篇](http://blog.csdn.net/yzzst/article/details/45671803)
[Android插件實例——360 DroidPlugin詳解](http://blog.csdn.net/yzzst/article/details/48093567)
[Android不發版也能在線修Bug?——AndFix 框架](http://blog.csdn.net/yzzst/article/details/48465031)
- 前言
- Android 熱補丁技術——資源的熱修復
- 插件化系列詳解
- Dex分包——MultiDex
- Google官網——配置方法數超過 64K 的應用
- IMOOC熱修復與插件化筆記
- 第1章 class文件與dex文件解析
- Class文件解析
- dex文件解析
- class與dex對比
- 第2章 虛擬機深入講解
- 第3章 ClassLoader原理講解
- 類的加載過程
- ClassLoade源碼分析
- Android中的動態加載
- 第4章 熱修復簡單講解
- 第5章 熱修復AndFix詳解
- 第6章 熱修復Tinker詳解及兩種方式接入
- 第7章 引入熱修復后代碼及版本管理
- 第8章 插件化原理深入講解
- 第9章 使用Small完成插件化
- 第10章 使用Atlas完成插件化
- 第11章 課程整體總結
- DN學院熱修復插件化筆錄
- 插件化
- 熱修復
- Android APP開發應掌握的底層知識
- 概述
- Binder
- AIDL
- AMS
- Activity的啟動和通信原理
- App啟動流程第2篇
- App內部的頁面跳轉
- Context家族史
- Service
- BroadcastReceiver
- ContentProvider
- PMS及App安裝過程