对于一个长期的学生项目,我正在尝试使用插件开发模块化应用程序。具体来说,我们会:
我们可以搜索,更新,删除和运行插件的主应用程序。此主应用程序还将存储插件中的一些数据。
从HTTP服务器下载了几个带有代码和GUI组件的插件。
目前,我有一个主应用程序,它能够从HTTP下载.apk文件,并从此.apk文件中定义的类创建新实例。我使用这里描述的方式:http://android-developers.blogspot.fr/2011/07/custom-class-loading-in-dalvik.html和DexClassLoader()方法。
但是我无法看到如何在插件.apk文件中显示作为资源存储的布局(或任何其他GUI组件)。例如,我试图通过使用插件classname:
从主应用程序创建一个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上完成吗?我应该尝试其他方法吗?
答案 0 :(得分:0)
我曾经尝试过同样的事情并且发现它是不可能的。如果从那时起(2011年1月)基本机制没有改变,那么它仍然是不可能的。技术细节在我的博客中用日语和英语描述。
博客:动态添加未在AndroidManifest.xml中声明的活动(不可能)
http://darutk-oboegaki.blogspot.jp/2011/01/androidmanifestxml-activity.html
答案 1 :(得分:0)
看到这个答案。它是关于如何在运行时动态运行未在AndroidManifest.xml中声明的Android&#39; Activity&#39; Service&#39; Service&quot; https://stackoverflow.com/a/41112682/2801776