android 動態載入技術

2021-07-14 01:56:31 字數 1131 閱讀 5587

首先,應該保證host程式、inte***ce部分和impl實現部分在同乙個專案中,其中inte***ce部分和impl實現部分作為android library。

寫好**之後,將impl部分打包jar的build指令如下:

task clearjar(type: delete) 

task makejar(type: copy)

makejar.dependson(clearjar, build)

在android studio右側的gradle模組中找到makejar指令,雙擊即可在libs下生成jar。

接下來使用android的sdk dx應用程式將jar打包成二進位制dex的jar

dx --dex --output target.jar my.jar
在host程式中初始化程式如下

string dexpath = environment.getexternalstoragedirectory().tostring() + file.separator + "target.jar";

log.i("dex", dexpath);

file dexoutputdir = context.getdir("dex", 0);

file dextmp = new file(dexoutputdir.getabsolutepath()+ file.separator + "target.dex");

if(dextmp.exists())

dexclassloader dcl = new dexclassloader(dexpath,dexoutputdir.getabsolutepath(),null,getclassloader());

try

dy = (idynamic)dynamicclass.newinstance();

if(dy != null)

} catch (exception e)

注意!要是想在程式執行的時候替換掉jar,必須把
dexoutputdir.getabsolutepath()
下的dex檔案刪除!

Android動態載入技術(外掛程式化技術)

no1 外掛程式化技術的好處 1 減輕應用的記憶體和cpu占用 2 實現熱插拔,即在不發布新版本的情況下更新某些模組 no2 外掛程式化方案必須要解決三個基礎性問題 資源訪問 activity生命週期的管理和classloader的管理 no3 宿主是指普通的apk,外掛程式一般指經過處理的dex或...

Android動態載入技術 系列索引

大家新年好,最近花了點時間,慢慢把這個系列的內容稍微調整了下。last edit 2016 2 10 現在使用得比較廣泛的動態載入技術的核心一般都是使用classloader,後者能夠引導程式外部的類 已編譯好的 從而達到公升級 邏輯的目的。雖然動態載入的核心原理比較簡單,但是根據功能的複雜程度,實...

android動態載入jar

jar的載入 jar放在assert中 dexclassloader dexclassloader null classloader localclassloader this.getclassloader try catch ioexception e fileoutputstream out n...