0

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

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

这一定是可能的,因为我们在 Play Store 上看到了类似的软件包,例如:https: //play.google.com/store/apps/details?id=com.mxtech.ffmpeg.v6_vfp

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

4

1 回答 1

1

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

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

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

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

于 2013-08-14T07:37:31.307 回答