对于一个长期的学生项目,我正在尝试使用插件开发一个模块化应用程序。具体来说,我们将有:
一个主应用程序,我们可以在其中搜索、更新、删除和运行插件。该主应用程序还将存储来自插件的一些数据。
从 HTTP 服务器下载的几个带有代码和 GUI 组件的插件。
现在,我有一个主应用程序,它能够从 HTTP 下载一个 .apk 文件,并从这个 .apk 文件中定义的类创建一个新实例。我使用这里描述的方式:http ://android-developers.blogspot.fr/2011/07/custom-class-loading-in-dalvik.html和 DexClassLoader() 方法。
但我无法看到如何显示作为资源存储在插件 .apk 文件中的布局(或任何其他 GUI 组件)。例如,我尝试使用插件类名从主应用程序创建一个 Intent,但没有成功:
DexClassLoader cl = new DexClassLoader(...);
Class<?> libClass = cl.loadClass("plugin_classname");
Intent intent = new Intent(this.getApplicationContext(), libClass);
startActivity(intent);
这不起作用,因为 Intent 没有在主应用程序的 AndroidManifest.xml 中声明。这也在另一个线程中进行了描述:Android- Using DexClassLoader to load apk file
这是否意味着绝对没有办法构建这样一个“动态”的用户界面?更一般地说,这种类型的插件系统可以在Android上完成吗?我应该尝试其他方法吗?