对于一个长期的学生项目,我试图开发一个模块化的应用程序插件。具体而言,我们将:
现在,我有一个主应用程序,它可以从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上实现吗?我该试试别的方法吗?
发布于 2013-11-08 10:25:08
我曾经尝试过同样的事情,发现这是不可能的。,如果从那以后基本机制没有改变(2011年1月),它仍然是不可能的。技术细节在我的博客中用日语和英语描述。
博客:动态添加未在AndroidManifest.xml (不可能)中声明的活动
http://darutk-oboegaki.blogspot.jp/2011/01/androidmanifestxml-activity.html
发布于 2017-11-07 14:56:11
看看这个答案。它是关于如何在运行时动态地运行Android的'Activity','Service',它没有在AndroidManifest.xml中声明:https://stackoverflow.com/a/41112682/2801776
https://stackoverflow.com/questions/13613605
复制相似问题