【问题标题】:Which are the architectures to support today?今天支持哪些架构?
【发布时间】:2017-10-25 12:56:58
【问题描述】:

我正在使用

开发一个 android 应用程序

opencv 库版本 330。

当前编译项目的大小约为 100 MB! 实在是太大了。 对应用程序模块使用 proguard,APK 大小减少了大约 3 或 4 MB。 在 opencv 库上使用 Proguard 时出现错误。一直没找到解决办法,用proguard很久了……

我通过在app/sr/main 下创建 jniLibs 文件夹来导入库。 现在这个文件夹包含了另外 7 个文件夹!

  • arm64-v8
  • armeabi
  • armeabi-V7A
  • mips
  • mips64
  • x86
  • x86-64

上面列出的每个文件夹都包含各自的 .so 文件...

我注意到删除其中一些文件夹后,apk 的大小会大大减小。 我不是架构专家,但我可以删除 armeabi 文件夹,因为(据我了解)不需要支持这种架构。

由于我的应用程序几乎可以发布,对于 Android 设备,我知道是否有人可以告诉我要支持哪些架构????

谢谢你们:D

This is what i'm including

【问题讨论】:

  • 阅读:developer.android.com/ndk/guides/abis.html - 曾经有一个设备的百分比细分...仍在寻找
  • 你包括opencv_world.so文件吗?
  • 我不包括 opencv_world.so.... 我包括那个:i.stack.imgur.com/QIeje.png
  • 您可以安全地移除 mipsmips64 拱形设备,我现在很少看到这些拱形设备。 armv8 是其中最新的。并且通常在高端手机上需要。
  • 我想在这里尝试一个实验,我看到一些项目在单个.so 文件上运行,所以我的意思是这些架构是交叉兼容的,只是性能有所下降。但是我不确定它是如何工作的,也许需要对 gradle 文件进行一些调整。

标签: java android opencv


【解决方案1】:

您需要为每个架构构建多个 apk,将其拆分,然后您可以将其一一上传到 Play 商店。阅读更多 Build Multiple APKs

您可以通过在您的应用 build.gradle 中添加 split 块来实现:

android {
  ...
  splits {

    // Configures multiple APKs based on ABI.
    abi {

      // Enables building multiple APKs per ABI.
      enable true

      // By default all ABIs are included, so use reset() and include to specify that we only
      // want APKs for x86, armeabi-v7a, and mips.

      // Resets the list of ABIs that Gradle should create APKs for to none.
      reset()

      // Specifies a list of ABIs that Gradle should create APKs for.
      include "x86", "armeabi-v7a", "mips"

      // Specifies that we do not want to also generate a universal APK that includes all ABIs.
      universalApk false
    }
  }
}

【讨论】:

  • 那么我必须为应用发布编译哪些 ABI?感谢您的帮助:)
  • 您可以为每个架构编译应用程序,这样您的应用程序将覆盖大量用户群。唯一的缺点是您需要将它们中的每一个都上传到 Google Play 商店。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 2019-07-28
  • 2010-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多