大家新年好,最近花了點時間,慢慢把這個系列的內容稍微調整了下。
last edit: 2016-2-10
現在使用得比較廣泛的動態載入技術的核心一般都是使用classloader,後者能夠引導程式外部的類(已編譯好的),從而達到公升級**邏輯的目的。雖然動態載入的核心原理比較簡單,但是根據功能的複雜程度,實際在android專案中使用的時候還要涉及許多其他方面的知識,這裡分為幾個篇幅分別進行介紹。
簡單易懂的介紹
內容:動態載入技術在android中的使用背景;
android的動態的載入大致可以分為「載入so庫」和「載入dex/jar/apk」兩種;
動態載入的基礎是類載入器classloader;
使用動態載入的三種模式;
採用動態載入的作用與代價;
除了classloader之外的動態修改**的技術(hotfix);
一些動態載入的開源專案;
類載入器classloader的工作機制
內容:類載入器classloader的建立過程和載入類的過程;
classloader的雙親**模式;
dexclassloader和pathclassloader之間的區別;
使用classloader載入外部類需要注意的一些問題;
自定義classloader(hack開發)
載入sd卡的so庫
內容:如何編譯和使用so庫;
分析android中載入so庫相關的原始碼;
如何載入sd卡中的so庫(也是動態載入apk需要解決的問題);
簡單的動態載入模式
內容:如何建立我們需要的dex檔案;
如何載入dex檔案裡面的類;
動態載入dex檔案在art虛擬機器的相容性問題;
**activity的模式
內容:如何啟動外掛程式apk中沒有註冊的activity
**activity模式開源專案「dynamic-load-apk」
動態建立activity的模式
內容:如何在執行時動態建立乙個activity;
自定義classloader並偷梁換柱替換想要載入的類;
動態建立activity模式開源專案「android-pluginmgr」
**模式與動態建立類模式的區別;
還未發布的內容
使用「環境注入」的模式;
使用動態載入技術的情形;
使用動態載入方式專案的專案結構調整和開發除錯方式;
開源專案「android-frontia」,動態載入框架的專案,專注於「外掛程式化」和「宿主與外掛程式之間的通訊」;
android 動態載入技術
首先,應該保證host程式 inte ce部分和impl實現部分在同乙個專案中,其中inte ce部分和impl實現部分作為android library。寫好 之後,將impl部分打包jar的build指令如下 task clearjar type delete task makejar type...
Android動態載入技術(外掛程式化技術)
no1 外掛程式化技術的好處 1 減輕應用的記憶體和cpu占用 2 實現熱插拔,即在不發布新版本的情況下更新某些模組 no2 外掛程式化方案必須要解決三個基礎性問題 資源訪問 activity生命週期的管理和classloader的管理 no3 宿主是指普通的apk,外掛程式一般指經過處理的dex或...
ANROID動態載入技術 系列索引
說到動態載入,我們經常使用 外掛程式化 熱修復 熱部署 等詞彙,所以大家應該不會陌生。本系列的文章的主要目的是分析一下整個動態載入的過程,重點分析其中的關鍵技術點,並且開發乙個比較靈活的動態載入框架,用於滿足不同程度的業務需求。現在使用得比較廣泛的動態載入技術的核心一般都是使用 classloade...