在android 外掛程式化技術中(宿主app和外掛程式app設定相同的shareduserid),動態載入apk有兩種方式:
一種是將資源主題包的apk安裝到手機上再讀取apk內的資源,這種方式的原理是將宿主app和外掛程式app設定相同的shareduserid,這樣兩個app將會在同乙個程序中執行,並可以相互訪問內部資源了。 一種是不用安裝資源apk的方式。其原理是通過dexclassloader類載入器去載入指定路徑下的apk、dex或者jar檔案,反射出r類中相應的內部類然後根據資源名來獲取我們需要的資源id,然後根據資源id得到對應的或者xml檔案。
下面介紹幾種常見的方法獲取資源以及**的方法。
獲取已安裝的apk中的資源
利用context的createpackagecontext方法,可以建立另外乙個包的上下文,裡面有兩個引數packagename包名,flags 標誌位(context_include_code、context_ignore_security)
用法如下try catch (namenotfoundexception e) 獲取未安裝的apk中的資源
新建乙個獲取資源的介面,傳入外掛程式apk的路徑返回resources物件
// 獲取外掛程式apk的resources物件
public resources getbundleresource(context context, string apkpath)
private assetmanager createassetmanager(string apkpath) catch (throwable th)
return null;
}獲得了resource 物件之後,就可以通過函式resources.getdrawable、resources.getstring、resources.getlayout 獲取、字串、布局檔案了。
Android動態載入技術(外掛程式化技術)
no1 外掛程式化技術的好處 1 減輕應用的記憶體和cpu占用 2 實現熱插拔,即在不發布新版本的情況下更新某些模組 no2 外掛程式化方案必須要解決三個基礎性問題 資源訪問 activity生命週期的管理和classloader的管理 no3 宿主是指普通的apk,外掛程式一般指經過處理的dex或...
Android元件化和外掛程式化
元件化開發元件化優勢 稍微改動乙個模組的一點 都要編譯整個工程,耗時耗力 公共資源 業務 模組混在一起耦合度太高,不方便測試 如何劃分元件 1.新建乙個lib元件,new module andorid library,取名baseutillib,我們將所有的公共的工具類 網路分裝等類放在其中 2.新...
Android外掛程式化框架SpeedTools
其實ios在現在外掛程式化android以後也會限制,至少已經開有動作了,例如resource物件建立在android n之後進入了廢棄的行業。外掛程式化其實如果對許可權沒有限制他就是病毒,你想想如果你 外掛程式化原理 按照實現模式來說分為 模式,修改反射hock系統關鍵流程的。按照apk安裝來分有...