android - 如何解决以非零退出值2/退出值-1完成的 “Android/Sdk/ndk-bundle/ndk-build.cmd”

标签 android opencv android-ndk

我正在使用最新版本的 ndk(18.1)。每当我尝试编译代码时,它就会向我显示任务':app:ndkBuild'的执行失败

我尝试了ndk的2个不同版本(18.1)和(14.1),两者都显示几乎相同的错误,而唯一的不同是;

  • ndk(18.1)显示退出值2
  • ndk(14.1)显示退出值-1

  • jni路径:

    ".mk" ".h" ".cpp" file location

    Build.Gradle:
    apply plugin: 'com.android.application'
    
    android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.fyp.major.fyp1"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    
    sourceSets.main {
        jni.srcDirs = []  //disable automatic ndk-build call
    }
    
    task ndkBuild(type: Exec, description: 'Compile JNI source via NDK') {
        commandLine "C:/Users/MaJoR/AppData/Local/Android/Sdk/ndk-bundle/ndk-build.cmd",
                'NDK_PROJECT_PATH=build/intermediates/ndk',
                'NDK_LIBS_OUT=src/main/jniLibs',
                'APP_BUILD_SCRIPT=src/main/jni/Android.mk',
                'NDK_APPLICATION_MK=src/main/jni/Application.mk'
    }
    tasks.withType(JavaCompile) {
        compileTask -> compileTask.dependsOn ndkBuild
    }
    
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
      }
    }
    
    dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation project(':openCVLibrary344')
    }
    

    ANDROID.mk
    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    #opencv
    OPENCVROOT:= C:\OpenCV-3.4.0-android-sdk
    OPENCV_CAMERA_MODULES:=on
    OPENCV_INSTALL_MODULES:=on
    OPENCV_LIB_TYPE:=SHARED
    include ${OPENCVROOT}/sdk/native/jni/OpenCV.mk
    
    LOCAL_SRC_FILES := com_fyp_major_fyp1_OpencvClass.cpp
    
    LOCAL_LDLIBS += -llog
    LOCAL_MODULE := MyLibs
    
    include $(BUILD_SHARED_LIBRARY)
    

    APPLICATION.mk
    APP_STL := gnustl_static
    APP_CPPFLAGS := -frtti -fexceptions
    APP_ABI := armeabi-v7a
    APP_PLATFORM := android-16
    

    使用ndk 18.1时发生输出错误

    non-zero exit value 2

    使用ndk 14.1时发生输出错误

    non-zero exit value -1

    这些错误有解决方案吗?

    最佳答案

    NDK r18已删除和gnuSTL ,因此您必须rebuild OpenCV for libc++

    至于NDK r14.1,没有太多信息可以解释失败。请注意,屏幕截图中提到在此处运行了 ndk-stack.cmd 而不是 ndk-build.cmd 。切换到较旧的NDK时可能会打错吗?

    关于android - 如何解决以非零退出值2/退出值-1完成的 “Android/Sdk/ndk-bundle/ndk-build.cmd”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53804563/

    相关文章:

    android - 将 unsigned char* 转换为 const char* - Android

    android - 如何在 Android(NDK) 中使用 CPR 库?

    build - Xamarin:使用 NDK 构建的 .so

    android - ViewPager setCurrentItem 不流畅

    安卓开发 : Logcat in Eclipse - can't restrict output to V/D/I/E?

    java - 使用 Eclipse 在多台计算机上开发 Android 应用程序

    android - 应用引擎 : no api in explorer

    python - 对指定像素执行不同的邻域操作

    c++ - 无法从源代码构建 OpenCV

    c++ - 如何使用opencv在ios中写一个简单的图片加载函数