Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在单独的Apk中为应用程序创建插件/附加组件/扩展_Android_Plugins_View_Apk_Add On - Fatal编程技术网

Android 在单独的Apk中为应用程序创建插件/附加组件/扩展

Android 在单独的Apk中为应用程序创建插件/附加组件/扩展,android,plugins,view,apk,add-on,Android,Plugins,View,Apk,Add On,我应该创建一个具有基本功能的“容器”应用程序 在“容器”应用程序中,我有一个NavigationView(根据已安装的插件动态添加项目)和一个FrameLayout 在单独的apk中,我应该创建一个插件,用我自己的视图为我的应用程序添加功能 问题是:如何在插件应用程序中创建带有视图的片段,并将其移动到上下文应用程序的FrameLayout 这里有两张图片可以更好地解释这种情况 有人有任何示例代码吗?链接到教程?或者告诉我怎么做 我试图创建一个用于进程间通信的AIDL,但只传递基本数据,不允许

我应该创建一个具有基本功能的“容器”应用程序

在“容器”应用程序中,我有一个NavigationView(根据已安装的插件动态添加项目)和一个FrameLayout

在单独的apk中,我应该创建一个插件,用我自己的视图为我的应用程序添加功能

问题是:如何在插件应用程序中创建带有视图的片段,并将其移动到上下文应用程序的FrameLayout

这里有两张图片可以更好地解释这种情况

有人有任何示例代码吗?链接到教程?或者告诉我怎么做


我试图创建一个用于进程间通信的AIDL,但只传递基本数据,不允许传递:对象、资源、图像等。

有可能,在尝试加载apk时需要两件事:dex代码和资源

使用dex代码,您可以修改当前上下文的默认类加载器。为每个插件添加单独的类加载器,并将它们放入上下文的类加载器中,修改上下文的类加载器的findClass方法,使其首先从插件的类加载器中查找类,如果找不到,则退回到传统的类加载器方式。我认为PathClassLoader会做到这一点,你要做的就是通过插件的文件路径到达它

对于resources,您需要做的是从resources类中获取旧的AssetManager,并使用反射调用addAssetPath,并将插件的apk路径传递给它

完成这两个步骤后,您将拥有一个插件,其所有类和资源的运行与常规应用程序没有太大区别

ps:注意,要使它在不同的系统版本和不同的自定义rom上正常工作,还有很多工作要做,这两个步骤不允许您从插件添加新的活动/服务/广播/提供者,因为您需要将它们注册到SystemServer,这是受系统限制的,我不认为没有根就可以做到这一点

---------------------------我是一个分离者----------------------------


如果你的应用程序能够运行可从internet下载的代码,play store将不允许你的应用程序发布。因为不能保证这些代码会从某人的手机上收集私人数据,或者做任何非法的事情。

通常不可能以安全的方式做你想要做的事情。欢迎您使用插件向“容器”应用程序提供
RemoteView
,就像应用程序小部件通过
AppWidgetManager向主屏幕提供
RemoteView
一样。