簡體   English   中英

Android應用程序插件架構

[英]Android application plug-in architecture

我正在嘗試在Android中實現插件架構,更具體地說是跨Apk類加載

假設我具有以下內容:apk A和apk B,在AndroidManifest.xml 接口中定義了相同的sharedUserId在apk A中定義了,而apk B包含實現了I類IB

我嘗試了以下方法

  1. 在apk A中,使用createPackageContext獲取B的上下文,然后調用Context.getClassLoader並加載所需的類名稱。 但是,由於這會創建兩個類加載器,因此我無法將B中加載的類IB強制轉換為接口I 這意味着我需要使用反射...

  2. 將apk B傳遞到DexClassLoader (由ApplicationInfo.sourceDir獲得的apk B的路徑),並由於“ 類由意外的DEX解決 ”而失敗,可能是因為apk B中也存在重復的接口I ...

  3. 修改build xml並按照Dalvik自定義類加載中的方法創建一個單獨的jar,其中包含B中的IB類 ,該jar實現I ,並將該jar放入apk B的assets目錄中。 這種方法看起來很有希望,因為我可以加載IB類並將其強制轉換為I。 但是,它需要復制jar,因此我不確定在涉及NDK共享庫時會發生什么。

我的問題是,有沒有一種方法無需修改build.xml / ant.properties並可以與NDK so庫一起使用?

不確定其他方法,但是對於方法2,可以在將B包裝為apk時排除接口I。 僅排除生成的I.class文件就足夠了。

您可能會發現Fred Chung的這篇文章很有幫助,並可能給您一些提示。 http://android-developers.blogspot.kr/2011/07/custom-class-loading-in-dalvik.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM