首页 > 解决方案 > NDK - 从 NDK 中删除 GNUSTL 后的问题(修订版 r18)

问题描述

今天我将我的 Android Studio NDK 更新到了最新版本18.0.5002713。成功安装过程后,我尝试重新运行我的应用程序,但无法这样做。不断出现的错误如下:org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':app'.

过去,我在 NDK 更新后运行我的应用程序时已经遇到问题,但能够通过添加arguments '-DANDROID_STL=gnustl_static'externalNativeBuildapp.gradle 文件中的配置来解决这些问题。

原始问题:(OpenCV - NDK 更新后对 'cv::CascadeClassifier::detectMultiScale() 的未定义引用

通过添加这行代码,我设法避免在所有 NDK r17c 版本的其余部分中出现任何与 NDK 相关的问题。

不幸的是,在 r18 修订版中,对 GNUSTL 的支持已与 gabi++ 和 stlport 一起被删除。

查看 NDK 修订历史:https ://developer.android.com/ndk/downloads/revision_history

删除现在已弃用的代码行会产生最初是上述问题原因的错误。现在的问题是最新的等价物是arguments '-DANDROID_STL=gnustl_static'什么?

编辑:使用'-DANDROID_STL=c++_static'导致旧错误

先感谢您。

标签: androidandroid-studioopencvandroid-ndk

解决方案


正如@Michael 已经建议的那样,您可以使用 libc++ 重建 OpenCV。

去做吧:

cd $OPENCV_SRC
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_DIR/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_ABI="arm64-v8a" -DANDROID_STL=c++_static  -DCMAKE_BUILD_TYPE=Release -DANDROID_NATIVE_API_LEVEL=android-24 ..
make install
cd install #the sdk will be here...

注意:使用“opencv-3.4.1”+ ndk18 测试


@shizhen 编辑

已在 macOS 上验证,应添加..aftercmake命令以使以下错误消失。

CMake 错误:源目录“/opencv-3.4.1/build”似乎不包含CMakeLists.txt.

更新如下:

cd $OPENCV_SRC
mkdir build
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=$ANDROID_DIR/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_ABI="arm64-v8a" -DANDROID_STL=c++_static  -DCMAKE_BUILD_TYPE=Release -DANDROID_NATIVE_API_LEVEL=android-24 
make install
cd install #the sdk will be here...

推荐阅读