今天,我将Android Studio NDK更新为最新版本18.0.5002713
。在成功完成安装过程之后,我尝试重新运行我的应用程序,但未能成功。不断出现的错误如下:org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':app'.
过去,NDK更新后,我在运行应用程序时遇到了问题,但能够通过在app.gradle文件的arguments '-DANDROID_STL=gnustl_static'
配置中添加externalNativeBuild
来解决这些问题。
原始问题:(OpenCV - undefined reference to 'cv::CascadeClassifier::detectMultiScale() after NDK update)
通过添加这一行代码,我设法在所有NDK r17c其余版本中避免了NDK的任何问题。
不幸的是,在r18版本中,与gabi ++和stlport一起删除了对GNUSTL的支持。
请参阅NDK版本历史记录:https://developer.android.com/ndk/downloads/revision_history
删除现在不建议使用的代码行会产生错误,该错误最初是上述问题的原因。现在的问题是arguments '-DANDROID_STL=gnustl_static'
的最新版本是什么?
编辑:使用'-DANDROID_STL=c++_static'
会导致旧错误
谢谢。
答案 0 :(得分:13)
@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上进行了验证,应在..
命令后添加cmake
,以使以下错误消失。
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...
答案 1 :(得分:1)
更新OpenCV可能需要一段时间。同时,我建议退回到NDK r16,后者用于构建OpenCV Android二进制文件。
答案 2 :(得分:0)
在第一个评论中首先回复@Aqeel iqbal的评论,找不到cmakelist的原因可能是因为您未使用opencv源,opencv为android sdk提供了独立软件包。以下ling是opencv来源的原始来源 opencv release,选择来源进行下载,而不是android pack。
下载源代码后,cd到源文件的根目录,例如 opencv-2.4.13.6 然后执行@ y30提供的命令,并注意 $ ANDROID_DIR 可能不是您android ndk的正确文件路径,对我来说,我使用以下这些:
... -DCMAKE_TOOLCHAIN_FILE = /用户/ihandysoft/Library/Android/sdk/ndk-bundle/build/cmake/android.toolchain.cmake ...
这是我生成的armv8a https://github.com/2666fff/opencv-for-android