android - 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'
到externalNativeBuild
app.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'
导致旧错误
先感谢您。
解决方案
正如@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...
推荐阅读
- python - 将背景图像添加到 Seaborn 散点图
- common-lisp - 什么是“真正的”功能?
- ssl - 将两个 .crt 和一个 .key 文件转换为 .pem
- android - 使用图层列表以编程方式更改 Drawable 中形状的颜色?
- c# - 做model.GetDeclaredSymbol时如何获取SynthesizedIntrinsicOperatorSymbol而不是SourceUserDefinedOperatorSymbol
- javascript - 使用 Node 创建目录和提取 HTML 标签
- javascript - 使用 javascript 填充 html 表
- python - 来自不同数据集的节点属性
- haskell - Haskell - 我如何在 IO 函数中使用 Maybe
- asp.net-core - 如何将用户声明从专用身份 API 传递到 ASP.NET 核心中的内部 API?