android - 具有不同 native 代码的多个 APK

标签 android java-native-interface arm apk android-ndk

我正在开发一个使用一些 native 代码的 Android 应用程序。我使用的 native 库有两种变体,一种用于 ARM v6 架构,一种用于 v7。因此,在我的 libs 文件夹中,我有两个文件夹,v6 库的“armeabi”和 v7 库的“armeabi-v7a”。这里的主要问题是这个库大约 8mb,所以我有 16mb 的库,而根据设备只需要这些库中的一个——我有 8mb 的膨胀,这使得我的 apk 相当大。

如果我创建 2 个单独的 apk,具有不同的版本代码,一个具有 v6 lib,一个具有 v7 lib,具有不同的版本代码,Google Play 无法识别这两个 apk 之间的设备支持差异,并尝试替换一个与另一个。

我看过this问题在哪里讨论了这个问题,但没有提供解决方案。

我如何让 Google Play 让这两个 APK 一起发布?

如有任何帮助,我们将不胜感激。

最佳答案

这(还)是不可能的。引用http://developer.android.com/guide/google/play/publishing/multiple-apks.html#SupportedFilters

Supported filters [...]

  • OpenGL texture compression formats [...]
  • Screen size (and, optionally, screen density) [...]
  • API level [...]

Other manifest elements that enable Google Play filters—but are not listed above—are still applied for each APK as usual. However, Google Play does not allow you to publish multiple APKs based on variations of them. Thus, you cannot publish multiple APKs if the above listed filters are the same for each APK (but the APKs differ based on other characteristics in the manifest file). For example, you cannot provide different APKs that differ purely on the characteristics.

编辑:我想到的一种解决方案是基于插件的:您使用核心逻辑、UI 和所有这些东西部署一个应用程序,并提供几个不同的“应用程序”,它们使用相同的证书签名但只包含 native 库. MXPlayer 使用这种方法来支持不同的体系结构,而不会膨胀单个 APK:https://sites.google.com/site/mxvpen/download (参见“编解码器”部分)。

关于android - 具有不同 native 代码的多个 APK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11468578/

相关文章:

c - Raspberry 微内核,似乎什么都不做

arm - 使用 NEON 指令与零进行比较

android - Flurry Android SDK proguard.cfg 文件配置问题

java - XML 工具上下文错误

java - 带有自定义库后缀的 System.loadLibrary

java - 我可以用 Java 创建自己的 native 方法吗?

linux - 使用 GDB 生成核心转储文件时如何限制其大小

java - setPixel() 返回 NullPointerException

Android:找不到或加载主类 org.gradle.wrapper.GradleWrapperMain

android - 如何在 Android 中设置文件的可执行权限以使用 "Runtime.getRuntime().exec(..)"执行