2012-11-28 34 views
7

對於一個長期的學生項目,我試圖用插件開發模塊化應用程序。具體來說,我們將有:帶DexClassLoader()和用戶界面的插件系統

  • 一個主要的應用程序,我們可以搜索,更新,刪除和運行插件。這個主應用程序還會存儲來自插件的一些數據。

  • 從代碼和GUI組件下載HTTP服務器的幾個插件。

現在,我有一個主應用程序,它能夠從HTTP下載.apk文件並從此.apk文件中定義的類創建新實例。我使用這裏描述的方法:http://android-developers.blogspot.fr/2011/07/custom-class-loading-in-dalvik.html與DexClassLoader()方法。

但我無法看到如何顯示作爲資源存儲在插件.apk文件中的佈局(或任何其他GUI組件)。舉例來說,我想沒有成功通過使用插件類名來創建從主應用程序的意圖:

DexClassLoader cl = new DexClassLoader(...); 
Class<?> libClass = cl.loadClass("plugin_classname"); 
Intent intent = new Intent(this.getApplicationContext(), libClass); 
startActivity(intent); 

這不起作用,因爲目的不是在主應用程序的AndroidManifest.xml中聲明。這也在這個其他線程中描述:Android- Using DexClassLoader to load apk file

這是否意味着絕對沒有辦法構建這樣的「動態」用戶界面?更一般地說,這種類型的插件系統可以在Android上完成嗎?我應該嘗試其他方法嗎?

+1

而不是使Activity成爲動態的,始終使用相同的活動並使用DexClassLoader加載一個片段代替。 – schwiz

+0

你是怎麼建立'plugin.jar'的。實現接口的jar?我有一個通過eclipse與'classes.dex'條目構建的jar,但是'loadClass'總是拋出一個異常。 – TheRealChx101

回答