具有DexClassLoader()和用户界面的插件系统

use*_*161 8 android dexclassloader

对于一个长期的学生项目,我正在尝试使用插件开发模块化应用程序.具体来说,我们会:

  • 我们可以搜索,更新,删除和运行插件的主应用程序.此主应用程序还将存储插件中的一些数据.

  • 从带有代码和GUI组件的HTTP服务器下载的几个插件.

现在,我有一个主应用程序,它能够从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);
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为Intent未在主应用程序的AndroidManifest.xml中声明.这也在这个其他线程中描述:Android-使用DexClassLoader加载apk文件

这是否意味着绝对没有办法建立这样的"动态"用户界面?更一般地说,这种类型的插件系统可以在Android上完成吗?我应该尝试其他方法吗?

Tak*_*aki 0

我曾经尝试过同样的事情,但发现这是不可能的。如果从那时(2011年1月)起基本机制没有改变,那仍然是不可能的。我的博客中用日语和英语描述了技术细节。

博客:动态添加AndroidManifest.xml中未声明的Activity(不可能)
http://darutk-oboegaki.blogspot.jp/2011/01/androidmanifestxml-activity.html