gpt4 book ai didi

Android Studio、Gradle、OpenCV 和 NDK

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:51:17 27 4
gpt4 key购买 nike

我正在尝试在 Android Studio 上测试 OpenCV Android,我对如何包含 NDK 感到困惑。

我想做的是运行 OpenCV 附带的示例。在提供的 6 个示例中,我成功运行了 4 个。异常(exception)情况是面部检测和 native Activity 。

我怀疑原因是我没有正确设置我的 NDK。

谷歌搜索我发现了一堆讨论,但并不真正理解它们。这是我第一次尝试同时使用 NDK 和 OpenCV,我对 Gradle 的了解有限。

我在我的 .bash_profile 中设置了一个环境变量

导出 ANDROID_NDK=pathTo/android-ndk-r9

我不明白如何把它带到工作室。

我看到对 jniFolder 的引用,但不明白这些是什么,我现在应该关心什么。 Stackoverflow.com/questions/17767557

tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
pkgTask.jniFolders = new HashSet<File>()
pkgTask.jniFolders.add(new File(projectDir, 'native-libs'))

我应该如何处理我的 build.gradle 文件末尾的粘贴?

总而言之,我的问题是。

  1. 如何让 Android Studio 读取 NDK 变量?
  2. jniFolder 到底是什么?
  3. 仅粘贴到我的 build.gradle 文件的末尾是否足够?

Google Group Discussions on Gradle and NDK


对于遇到此问题的任何人,除了 Xaviers anwser 之外,这就是我解决它的方法。 首先,我在文档目录中阅读了 NDK 附带的 OVERVIEW.html。然后我将 .mk 和 .cpp 文件编译成一个 .so 文件。我在示例 jni 目录中就地执行了此操作这在我复制到 Xavier 指定的目标的 libs 文件夹中创建了 .so 文件。

最佳答案

如果您有使用 ndk 构建的库并希望将它们放入启用 gradle 的 android 项目中(使用插件的 0.7.+ 版本),您可以将它们放入

src/main/jniLibs/<abi>/libfoo.so

例如:

src/main/jniLibs/armeabi-v7a/libfoo.so
src/main/jniLibs/x86/libfoo.so

它们会自动打包。

如果您想将它们保存在 native-libs 文件夹中,您可以将以下内容放入您的 gradle 文件中:

android {
sourceSets.main {
jniLibs.srcDirs = ['native-libs']
}
}

所有这一切实际上是告诉 gradle 主要源集的 jniLibs 文件夹在哪里(相对于项目根目录。)

您展示的代码段正在做一些不同的事情。它告诉包任务还包括一些 native 库。这是一个 hack,用于在以前的版本中使用不再受支持的未记录的任务 API。

关于Android Studio、Gradle、OpenCV 和 NDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20921862/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com