你們新年好,最近花了點時間,慢慢把這個系列的內容稍微調整了下。
Last Edit: 2016-2-10android
Author:Kaedeagit
GitHub:android-dynamical-loadinggithub
在Android開發中採用動態加載技術,能夠達到不安裝新的APK就升級APP功能的目的,能夠用來到達快速發版的目的,也能夠用來修復一些緊急BUG。segmentfault
如今使用得比較普遍的動態加載技術的核心通常都是使用 ClassLoader ,後者可以加載程序外部的類(已編譯好的),從而達到升級代碼邏輯的目的。雖然動態加載的核心原理比較簡單,可是根據功能的複雜程度,實際在Android項目中使用的時候還要涉及許多其餘方面的知識,這裏分爲幾個篇幅分別進行介紹。框架
內容:spa
動態加載技術在Android中的使用背景;插件
Android的動態的加載大體能夠分爲「加載SO庫」和「加載DEX/JAR/APK」兩種;代理
動態加載的基礎是類加載器ClassLoader;調試
使用動態加載的三種模式;開發
採用動態加載的做用與代價;
除了ClassLoader以外的動態修改代碼的技術(HotFix);
一些動態加載的開源項目;
內容:
類加載器ClassLoader的建立過程和加載類的過程;
ClassLoader的雙親代理模式;
DexClassLoader和PathClassLoader之間的區別;
使用ClassLoader加載外部類須要注意的一些問題;
自定義ClassLoader(Hack開發)
文章地址:Android動態加載基礎 ClassLoader的工做機制
內容:
如何編譯和使用SO庫;
分析Android中加載SO庫相關的源碼;
如何加載SD卡中的SO庫(也是動態加載APK須要解決的問題);
內容:
如何建立咱們須要的dex文件;
如何加載dex文件裏面的類;
動態加載dex文件在ART虛擬機的兼容性問題;
內容:
如何啓動插件APK中沒有註冊的Activity
代理Activity模式開源項目「dynamic-load-apk」
內容:
如何在運行時動態建立一個Activity;
自定義ClassLoader並偷樑換柱替換想要加載的類;
動態建立Activity模式開源項目「android-pluginmgr」
代理模式與動態建立類模式的區別;
地址:Android動態加載黑科技 動態建立Activity模式
使用「環境注入」的模式;
使用動態加載技術的情形;
使用動態加載方式項目的項目結構調整和開發調試方式;
開源項目「Android-Frontia」,動態加載框架的項目,專一於「插件化」和「宿主與插件之間的通信」;