【问题标题】:Android : libopencv_java3.so not found for armeabi-v7a abi filter on aarch64 platformAndroid:在 aarch64 平台上找不到 armeabi-v7a abi 过滤器的 libopencv_java3.so
【发布时间】:2018-07-27 14:29:25
【问题描述】:

This questionthis post 提到使用armeabi-v7a ABI 过滤器构建的NDK 也适用于aarch64 Android 平台,因此我们不需要在ABI 过滤器列表中包含arm64-v8a

但是,我在两个aarch64 平台上遇到了以下问题,一个是 Lenovo Phab-P1770M 和一个 Redmi 3S。

我在我的项目中使用 opencv 库。但是,当我将以下内容添加到我的 app.module

ndk {
        abiFilters "armeabi-v7a", "x86"
    }

我看到构建的 apk 在 lib/armeabi-v7alib/x86 文件夹中不包含 libopencv_java3.so。调用opencv 函数,显然也会崩溃,并出现错误libopencv_java3.so

但是,当我将arm64-v8a 添加到上面的列表时,lib/arm64-v8a 文件夹也会在 APK 中创建(如预期的那样)。但是libopencv_java3.so 库仅存在于该目录中,并且正如预期的那样,该模块在运行时正确加载。

所以基本上,我想了解仅使用 ABI 过滤器 armeabi-v7a 是否也适用于 aarch64 平台。因为前面两篇文章都说应该,但是我的经验并没有证明。

谁能帮我理解我做错了什么?

【问题讨论】:

    标签: android opencv


    【解决方案1】:

    armeabi-v7a 是 32 位 CUP 架构,通常也兼容 64 位架构。如果您没有提供正确的动态库,即对应的arm64-v8a,安装管理器将为您的目标手机选择辅助ABI,即armeabi-v7a

    但是,为什么不总是为您的应用使用主要 ABI?作为主要 ABI 将为您的应用程序提供最佳性能。

    您可以从这里获得更多关于 abi 的详细信息:https://developer.android.com/ndk/guides/abis

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-13
      • 2018-10-28
      • 2016-07-27
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2016-11-23
      • 1970-01-01
      相关资源
      最近更新 更多