当前位置: 首页 > 知识库问答 >
问题:

Android:libopencv_java3。所以在aarch64平台上找不到armeabi-v7a abi过滤器

师增
2023-03-14

这个问题和这个帖子提到了使用armeabi-v7aABI过滤器构建的NDK也适用于aarch64Android平台,所以我们不需要在ABI过滤器列表中包含arm64-v8a

然而,我在两个AARCH64平台上遇到了以下问题,一个是联想Phab-P1770M和一个是红米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平台。因为前面提到的两个帖子都说应该,但我的经验并没有说明这一点。

谁能帮我明白我做错了什么?

共有1个答案

康秋月
2023-03-14

armeabi-v7a是32位CUP架构,通常也兼容64位架构。如果您没有提供适当的动态库,即相应的ARM64-V8A,Installation manager将为您的目标电话提取辅助ABI,即ARMEABI-V7A

但是,为什么不总是在应用程序中使用主要的ABI呢?作为主要的ABI将给您的应用程序最好的性能。

有关abi的更多详细信息,请访问:https://developer.android.com/ndk/guides/abis

 类似资料:
  • 我最近升级到JUnit 5,我正试图通过JUnit jupiter vintage维护JUnit 4套件,使用提供的确切说明,您可以在任何地方找到示例。 注意,我使用的是离线构建,因为我必须这样做,所以虽然我可以下载我需要的任何Jar,但我并没有主动连接到任何maven存储库。 Gradle的版本是4.9,是所有的。zip发行版,不是安装了包,而是解压缩并添加到PATH变量中(这一点都不重要)。

  • 我试图将我的rasa机器人部署到heroku,我正在使用python。 我的要求。txt文件如下所示: 空间==2.0。18 https://github.com/explosion/spacy-models/releases/download/en_core_web_md-2.0.0/en_core_web_md-2.0.0.tar.gz#egg=en_core_web_md==2.0.0 部署

  • 在Bot编辑界面,选择Triggers栏,添加Post-Interation Script,将一下脚本复制进编辑框。配置好自己的User Key,和API Key。 #!/bin/sh IPA_NAME=$(basename "${XCS_ARCHIVE%.*}".ipa) IPA_PATH="${XCS_OUTPUT_DIR}/ExportedProduct/Apps/${IPA_NAME}"

  • 问题内容: 一些旧代码依赖于平台的默认字符集进行翻译。对于“西方世界”中的Windows和Linux安装,我知道这意味着什么。但是考虑到俄罗斯或亚洲平台,我完全不确定其平台的默认字符集是什么(只是UTF-16?)。 因此,我想知道执行以下代码行会得到什么: PS: 我不想在这里讨论字符集的问题及其与Unicode的区别。我只想收集什么操作系统会导致什么特定字符集。请仅发布具体值! 问题答案: 这是

  • 我正在尝试通过亚马逊弹性豆子(使用本教程)部署我的django应用程序,但收到以下错误。 错误:Elastic Beanstalk找不到任何平台。确保您拥有访问Elastic Beanstalk所需的权限。 我该如何解决这个问题? 谢谢