[英]Android Studio+Experimental Gradle Plugin+NDK+OpenCV:showing error at opencv include statement
我正在将opencv库与我的项目集成。 我已经使用实验gradle插件成功配置了NDK。 但是使用Opencv会出错。 这是我的cpp文件中显示的错误。
我的build.gradle是:
apply plugin: 'com.android.model.application'
model {
android {
compileSdkVersion = 23
buildToolsVersion = "23.0.0"
defaultConfig.with {
applicationId = "com.legalplex.dharani.android"
minSdkVersion.apiLevel = 14
targetSdkVersion.apiLevel = 23
buildConfigFields.with {
create() {
type = "int"
name = "VALUE"
value = "1"
}
}
}
}
android.ndk {
moduleName = "document_scanner"
cppFlags += "-fno-rtti"
cppFlags += "-fno-exceptions"
ldLibs = ["android", "log"]
stl ="gnustl_shared"
}
android.buildTypes {
release {
minifyEnabled = false
proguardFiles += file('proguard-rules.pro')
}
}
android.productFlavors {
// for detailed abiFilter descriptions, refer to "Supported ABIs" @
// https://developer.android.com/ndk/guides/abis.html#sa
create("arm") {
ndk.abiFilters += "armeabi"
}
create("arm7") {
ndk.abiFilters += "armeabi-v7a"
}
create("arm8") {
ndk.abiFilters += "arm64-v8a"
}
create("x86") {
ndk.abiFilters += "x86"
}
create("x86-64") {
ndk.abiFilters += "x86_64"
}
create("mips") {
ndk.abiFilters += "mips"
}
create("mips-64") {
ndk.abiFilters += "mips64"
}
// To include all cpu architectures, leaves abiFilters empty
create("all")
}
}
dependencies {
compile 'com.android.support:support-v4:19.1.0'
compile project(':openCVLibrary')
}
即使在我的gradle文件中添加模块依赖项之后,为什么它在opencv中显示错误。 请帮帮我。 如何配置我的build.gradle文件以激活我们自己的Android.mk。 这是我的Android.mk文件:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
include OpenCV-2.4.10-android-sdk\sdk\native\jni\OpenCV.mk
OPENCV_INSTALL_MODULES := on
LOCAL_MODULE := document_scanner
LOCAL_SRC_FILES := jni_part.cpp
LOCAL_C_INCLUDES := OpenCV-2.4.10-android-sdk\sdk\native\jni\include
OPENCV_LIB_TYPE:=STATIC
LOCAL_LDLIBS += -llog
include $(BUILD_SHARED_LIBRARY)
你应该a)启用ndk-build,和b)禁用ndk插件。 下面的代码针对Mac进行了调整,在Windows上需要ndk-build.cmd
:
task buildNative(type: Exec, description: 'Compile JNI source via NDK') {
def ndkDir = android.ndkDirectory
commandLine "$ndkDir/ndk-build"
}
buildNative.onlyIf {
def ndkDir = android.ndkDirectory
file("$ndkDir/ndk-build").exists()
}
task cleanNative(type: Exec, description: 'Clean JNI object files') {
def ndkDir = android.ndkDirectory
commandLine "$ndkDir/ndk-build", 'clean'
}
cleanNative.onlyIf {
def ndkDir = android.ndkDirectory
file("$ndkDir/ndk-build").exists()
}
clean.dependsOn 'cleanNative'
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn buildNative
}
defaultConfig.ndk {
moduleName "pexeso-android-mobile"
}
tasks.all {
task -> if (task.name.contains('compileDebugNdk') || task.name.contains('compileReleaseNdk')) task.enabled = false
}
UPDATE类似的方法适用于实验插件,请参阅在ndk {} DSL中定义LOCAL_SRC_FILES 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.