【发布时间】:2016-10-11 02:22:15
【问题描述】:
我想尝试 SDK 附带的示例代码之一,即“tutorial-2-mixedprocessing”。我按照以下步骤操作:
1) 导入项目 -> 选择教程目录
2) 我将其命名为“tutorial-2-mixedprocessing1”,勾选了 3 个选项(“尽可能替换 jars&lib 源”和“创建 Gradle 样式的模块名称”)
3) 警告:“当前插件中不推荐使用 NDK 集成” 我点击了 “在 gradle.properties 中设置“android.useDeprecatedNdk=true”以继续使用当前的 NDK 集成”
4) 导入模块 -> 在我的情况下,在“C:\SDKs\OpenCV-android-sdk\sdk\java”中选择的 java 模块 -> 勾选了左 3 复选框
5) 错误:原因:在 C:\Users\c010\AppData\Local\Android\Sdk 中找不到带有哈希字符串 'android-14' 的目标 安装缺少的平台并同步项目。 我更改了 compileSdkversion、buildToolsVersion 和 targetSdkVersion 并同步了。错误消失了。
6-7) 打开模块设置 -> 依赖项 添加了 Opencv 模块作为模块依赖项。添加了 NDK 位置(在我的例子中是“C:\SDKs\android-ndk-r12-beta2”)
8) Build -> make project lead Error:(2, 33) opencv2/core/core.hpp: No such file or directory
在 Eclipse 中我会添加一些包含路径,但我不知道如何在 Android Studio 中添加。我认为编辑 Android.mk 会有所帮助:
我的 Android.mk 是
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
ifdef OPENCV_ANDROID_SDK
ifneq ("","$(wildcard $(OPENCV_ANDROID_SDK)/OpenCV.mk)")
include ${OPENCV_ANDROID_SDK}/OpenCV.mk
else
include ${OPENCV_ANDROID_SDK}/sdk/native/jni/OpenCV.mk
endif
else
include ../../sdk/native/jni/OpenCV.mk
endif
LOCAL_MODULE := mixed_sample
LOCAL_SRC_FILES := jni_part.cpp
LOCAL_LDLIBS += -llog -ldl
include $(BUILD_SHARED_LIBRARY)
我把它改成了普通的绝对路径
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
include C:\SDKs\OpenCV-android-sdk\sdk\native\jni\OpenCV.mk
LOCAL_MODULE := mixed_sample
LOCAL_SRC_FILES := jni_part.cpp
LOCAL_LDLIBS += -llog -ldl
include $(BUILD_SHARED_LIBRARY)
没有帮助。
我在“ifdef ...”行之前添加了“OPENCV_ANDROID_SDK := C:\SDKs\OpenCV-android-sdk\”,结果相同。
我添加了 'LOCAL_C_INCLUDES += C:\SDKs\OpenCV-android-sdk\sdk\native\jni\include' ,结果相同。
我编辑的 gradle 文件看起来像
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "org.opencv.samples.tutorial2"
minSdkVersion 8
targetSdkVersion 8
ndk {
moduleName "mixed_sample"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile project(':openCVLibrary310')
}
我将ndk括号改成如下:
ndk {
moduleName "mixed_sample"
cFlags += "-I${file("C:/SDKs/OpenCV-android-sdk/sdk/native/jni/include")}".toString()
}
错误:错误:null-IC:\SDKs\OpenCV-android-sdk\sdk\native\jni\include:无效参数
它不接受 cppFlags 错误:(14, 0) 在 com.android.build.gradle.internal.dsl.NdkOptions_Decorated@797a42f2 上找不到属性“cppFlags”。
【问题讨论】:
标签: android opencv android-studio android-ndk opencv4android