无法使用ndk支持构建android项目

时间:2017-09-08 06:55:04

标签: android c++ opencv android-ndk

这是我的Android.mk文件

  

LOCAL_PATH:= $(致电my-dir)

     

包括$(CLEAR_VARS)

     

OPENCV_INSTALL_MODULES:=开   包括$(OPENCV_ANDROID_SDK)/sdk/native/jni/OpenCV.mk

     

LOCAL_MODULE:= face-lib   LOCAL_SRC_FILES + = $(LOCAL_PATH)/face-lib.cpp $(LOCAL_PATH)/FaceRecognitionLib/Facebase.cpp   LOCAL_SRC_FILES + = $(LOCAL_PATH)/FaceRecognitionLib/Eigenfaces.cpp $(LOCAL_PATH)/FaceRecognitionLib/Fisherfaces.cpp   LOCAL_SRC_FILES + = $(LOCAL_PATH)/FaceRecognitionLib/PCA.cpp $(LOCAL_PATH)/FaceRecognitionLib/LDA.cpp   LOCAL_C_INCLUDES + = $(EIGEN3_DIR)$(LOCAL_PATH)/ FaceRecognitionLib / RedSVD / include   LOCAL_LDLIBS + = -llog -ldl   LOCAL_CPPFLAGS + = -std = gnu ++ 11 -frtti -fexceptions

     

包括$(BUILD_SHARED_LIBRARY)

Gradle文件

externalNativeBuild {
        ndkBuild {
            path 'src/main/cpp/Android.mk'
        }
    }

我得到的错误

  

错误:配置项目':app'时出现问题。   为ndkBuild执行外部本机构建D:\ FaceRecognition \ FaceRecognitionApp \ app \ src \ main \ cpp \ Android.mk

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码构建.so文件,不要忘记更改您的ndk路径。

import org.apache.tools.ant.taskdefs.condition.Os

android {
       .
       .
    sourceSets.main {
            jniLibs.srcDir 'src/main/libs' //set libs as .so's location instead of jniLibs
            jni.srcDirs = [] //disable automatic ndk-build call with auto-generated Android.mk
        }

        // call regular ndk-build(.cmd) script from app directory
        task ndkBuild(type: Exec) {
            if (Os.isFamily(Os.FAMILY_WINDOWS)) {
                commandLine 'D:\\sdk\\android-ndk\\ndk-build.cmd', '-C', file('src/main/jni').absolutePath
            } else {
                commandLine 'ndk-build', '-C', file('src/main/jni').absolutePath
            }
        }

        tasks.withType(JavaCompile) {
            compileTask -> compileTask.dependsOn ndkBuild
        }
}