在使用 OpenCV 库时出现错误:
Error:Execution failed for task ':app:compileDebugNdk'. Error: Your project contains C++ files but it is not using a supported native build system. Consider using CMake or ndk-build integration with the stable Android Gradle plugin: https://developer.android.com/studio/projects/add-native-code.html or use the experimental plugin: http://tools.android.com/tech-docs/new-build-system/gradle-experimental.`
当我创建 jniLibs
文件夹时,它会显示 cpp 文件夹,而不是当我运行该应用程序时,它会显示我有 cpp 文件,但它们没有使用受支持的 native 构建系统
最佳答案
我昨天能够使用 NDK 的 cmake 从 git ( https://github.com/opencv/opencv/tree/3.1.0) 构建 opencv。
export ANDROID_NDK=~/android-sdks/ndk-bundle
cmake -GNinja -DANDROID_TOOLCHAIN_NAME=clang -DANDROID_ABI=armeabi-v7a \
-DANDROID_ARM_NEON=ON -DENABLE_NEON=ON -DANDROID_STL=c++_static \
-DANDROID_CPP_FEATURES="rtti exceptions" -DANDROID_PLATFORM=android-9 \
-DBUILD_ANDROID_EXAMPLES=OFF -DBUILD_DOCS=OFF -DBUILD_FAT_JAVA_LIB=OFF \
-DBUILD_JASPER=OFF -DBUILD_OPENEXR=OFF -DBUILD_PACKAGE=OFF \
-DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DBUILD_TIFF=ON \
-DBUILD_WITH_DEBUG_INFO=OFF -DBUILD_opencv_apps=OFF -DBUILD_opencv_java=OFF \
-DBUILD_opencv_python2=OFF -DBUILD_opencv_world=OFF \
-DCMAKE_C_FLAGS_RELEASE="-Os -DNDEBUG -fvisibility=hidden -ffunction-sections -fstack-protector-all" \
-DCMAKE_CXX_FLAGS_RELEASE="-Os -DNDEBUG -fvisibility=hidden -ffunction-sections -fstack-protector-all -fvisibility-inlines-hidden" \
-DENABLE_PRECOMPILED_HEADERS=OFF -DWITH_EIGEN=OFF -DWITH_JASPER=OFF \
-DWITH_OPENEXR=OFF -DWITH_TIFF=ON -DWITH_TBB=ON -DWITH_CUDA=OFF \
-DWITH_CUFFT=OFF -DWITH_WEBP=OFF -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
path/to/opencv
那是命令行使用,但如果您是在 Android Studio 中构建,类似的东西应该可以工作。我猜你不需要所有这些选项,但这些是给我的说明。
不幸的是,NDK r13 cmake 工具链中存在一个需要首先修复的错误:https://github.com/android-ndk/ndk/issues/234 .我们即将发布 NDK r14 的第一个测试版,它确实有修复。您不应该将测试版用于生产,但如果您不打算立即发布,它应该会在 2 月发布稳定版本。
关于android - 配置 OpenCV 时出错。当我运行该应用程序时,它显示我有 cpp 文件,但它们没有使用受支持的 native 构建系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40660439/