android - Android:在 aarch64 平台上找不到 armeabi-v7a abi 过滤器的 libopencv_java3.so
问题描述
这个问题和这篇文章提到使用armeabi-v7a
ABI 过滤器构建的 NDK 也适用于aarch64
Android 平台,因此我们不需要包含arm64-v8a
在 ABI 过滤器列表中。
aarch64
但是,我在联想 Phab-P1770M 和 Redmi 3S两个平台上遇到了以下问题。
我在我的项目中使用 opencv 库。但是,当我将以下内容添加到我的app.module
ndk {
abiFilters "armeabi-v7a", "x86"
}
我看到构建的 apk 不包含libopencv_java3.so
在lib/armeabi-v7a
andlib/x86
文件夹中。调用opencv
函数,显然也会因错误而崩溃,libopencv_java3.so
.
但是,当我添加arm64-v8a
到上面的列表中时,lib/arm64-v8a
还会在 APK 中另外创建文件夹(如预期的那样)。但是该libopencv_java3.so
库仅存在于该目录中,并且正如预期的那样,该模块在运行时正确加载。
所以基本上,我想了解仅使用 ABI 过滤器是否也armeabi-v7a
适用于aarch64
平台。因为前面提到的两个帖子都说应该,但我的经验并没有证明这一点。
谁能帮我理解我做错了什么?
解决方案
armeabi-v7a
是 32 位 CUP 架构,通常它也兼容 64 位架构。如果您没有提供正确的动态库,即相应的arm64-v8a
,安装管理器将选择辅助 ABI,即armeabi-v7a
您的目标手机。
但是,为什么不总是为您的应用程序使用主 ABI?作为主要 ABI 将为您的应用程序提供最佳性能。
您可以从此处获取有关 abi 的更多详细信息:https ://developer.android.com/ndk/guides/abis
推荐阅读
- angular - FirebaseError:消息:我们无法注册默认的服务工作者,服务工作者已经添加
- python-3.x - 在 DRF 中使用 elasticsearch 的正确方法
- css - 获取两个 i 标签之间信息的 CSS 选择器或 XPath?
- javascript - 是否可以生成似乎由 js 文件生成的 cookie - 抓取问题
- windows - Windows 10 服务启动错误2(系统找不到指定路径)
- python - 是否可以在熊猫数据框中进行全文搜索
- php - 在 PHP 中更改引用计数时触发事件
- java - 在旧 EJB 配置位于 ejb-jar.xml 的项目中使用 ejb 注释和 CDI
- ajax - Bootstrap 数据表分页和排序
- c# - 在我的 asp.net 核心 MVC Web 应用程序中,我如何使 recaptcha 成为必填字段