Android:在aarch64平台上找不到armeabi-v7a abi过滤器的libopencv_java3.so

时间:2018-07-27 14:29:25

标签: android opencv

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

但是,我在两个arm64-v8a平台(联想Phab-P1770M和Redmi 3S)上遇到以下问题。

我在我的项目中使用opencv库。但是,当我在aarch64

中添加以下内容时
app.module

我看到内置的APK在ndk { abiFilters "armeabi-v7a", "x86" } libopencv_java3.so文件夹中不包含lib/armeabi-v7a。显然,调用lib/x86函数也会崩溃,并显示错误opencv

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

因此,基本上,我想了解一下是否仅使用ABI过滤器libopencv_java3.so也适用于armeabi-v7a平台。因为上述两篇文章都说应该这样做,但是我的经验并未表明这一点。

有人可以帮助我了解我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

armeabi-v7a是32位CUP体系结构,通常它也与64位体系结构兼容。如果您没有提供适当的动态库,即相应的arm64-v8a,则安装管理器将为您的目标电话选择辅助ABI,即armeabi-v7a

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

您可以从此处获取有关abi的更多详细信息:https://developer.android.com/ndk/guides/abis