繁体   English   中英

Android Studio +实验Gradle插件+ NDK + OpenCV:在opencv include语句中显示错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM