2

在尝试构建我的 android ndk 项目时出现以下错误。安卓工作室版本 3.1.3

FAILURE:构建失败并出现异常。

  • 出了什么问题:任务“:app:ndkBuild”执行失败。

    进程 'command'/Users/bnaskar/Library/Android/sdk/ndk-bundle/ndk-build'' 以非零退出值 2 结束

  • 尝试:使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。

  • 例外是:

org.gradle.api.tasks.TaskExecutionException:任务':app:ndkBuild'的执行失败。在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70) 在 org.gradle. .api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51) 在 org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62) 在 org.gradle.api.internal .tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) 在 org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter。

7 秒内构建失败 15 个可操作任务:1 个已执行,14 个最新 jampp-MacBook-Pro:BreakOut kllu$ ./gradlew installDebug --stacktrace

我的 build.gradle 文件

apply plugin: 'com.android.application'
android {
    compileSdkVersion 24
    buildToolsVersion "27.0.3"
    defaultConfig {
        applicationId "com.example.bnn.breakout"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        //testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

        sourceSets.main {
            jni.srcDirs = [] //disable automatic ndk-build call
            //jniLibs.srcDir "src/main/libs"
        }
        task ndkBuild(type: Exec, description: 'Compile JNI source via NDK') {
            commandLine "/Users/bnnk/Library/Android/sdk/ndk-bundle/ndk-build",
                    '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 {
        debug {
            debuggable true
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:24.2.1'
    implementation 'com.android.support:multidex:1.0.3'
    testImplementation 'junit:junit:4.12'
}
4

1 回答 1

6

恐怕您使用不推荐的方式为您的项目构建本机库。新的 Android 插件 (v. 3.1.2) 使用externalNativeBuild. 升级见官方说明

简而言之,您需要类似的东西

android { 
    externalNativeBuild {
        ndkBuild {
            path "Android.mk"
        }
    }
} 

在您的模块build.gradle中。

对于您的文件,结果可能如下所示:

apply plugin: 'com.android.application'
android {
    compileSdkVersion 24
    buildToolsVersion "27.0.3"
    defaultConfig {
        applicationId "com.example.bnn.breakout"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        //testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

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

    buildTypes {
        debug {
            debuggable true
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:24.2.1'
    implementation 'com.android.support:multidex:1.0.3'
    testImplementation 'junit:junit:4.12'
}

确保您的 Android 插件是最新的,请参阅https://stackoverflow.com/a/50953301/192373

于 2018-06-20T16:14:12.023 回答