Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.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 Play Store应用程序的另一个包中使用本机库?_Android_Android Ndk_Cpu - Fatal编程技术网

如何在Android Play Store应用程序的另一个包中使用本机库?

如何在Android Play Store应用程序的另一个包中使用本机库?,android,android-ndk,cpu,Android,Android Ndk,Cpu,我想在Play Store上放置不同编译的本机库软件包(4个不同的软件包,包括armv6、armv6+vfp、armv7、armv7+neon) 然后,我想发布一个主应用程序包,它可以使用这4个包中的一个。它将在运行时检测cpu类型,并告诉用户下载名为MyApplibPackageMV6VFP的应用程序。之后,如果用户试图使用主应用程序中的库,主应用程序将检查是否安装了MyApplibPackagerMV6VFP,如果安装了,则它(主应用程序)必须能够从该远程包加载本机库 这一定是可能的,因为我

我想在Play Store上放置不同编译的本机库软件包(4个不同的软件包,包括armv6、armv6+vfp、armv7、armv7+neon)

然后,我想发布一个主应用程序包,它可以使用这4个包中的一个。它将在运行时检测cpu类型,并告诉用户下载名为MyApplibPackageMV6VFP的应用程序。之后,如果用户试图使用主应用程序中的库,主应用程序将检查是否安装了MyApplibPackagerMV6VFP,如果安装了,则它(主应用程序)必须能够从该远程包加载本机库

这一定是可能的,因为我们在Play Store上看到类似的软件包,如:


我怎么能做同样的事情;允许第三方(由我制作)应用程序使用位于另一个应用程序(由我制作)上的库?

只是为了发表我对如何实现这一目标的看法。这可能不是最标准的方法,但应该有效

以MX播放器插件为例,主程序是MXPlayer.apk,附加编解码器是在MXPlugin.apk中

因为这两个都是由同一个供应商签署的,所以它们可以使用相同的UID。因此MXPlugin可以将xxxCodec.So复制到/data/data/com.example.mxplayer/libs/中,然后mxplayer可以加载新的编解码器


它不是很优雅。以你的情况为例。如果我是你,我会通过服务接口公开主程序中的所有API(并受相同签名保护)。所有其他apk都将绑定到此主服务并调用本机库中的实现。

谢谢。目前,我已经在为所有本机操作使用服务。唯一的问题是,该服务与我的主进程在同一进程中运行。(我知道可以让它以更独立的方式运行……但我没有这样做,因为我必须编写更复杂的代码才能做到这一点)