任务':app:ndkBuild'的执行失败

时间:2017-09-09 19:39:13

标签: android android-studio android-ndk build.gradle

我有关于NDK-Build的问题。那是失败的信息:

Error:Execution failed for task ':app:ndkBuild'.
> A problem occurred starting process 'command 'ndk-build.cmd''

我测试了一些修复程序,但它无法正常工作。我不知道我能做些什么。我希望你能帮我解决问题:

这是build.gradle:

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

apply plugin: 'com.android.application'

android {
     compileSdkVersion 14
     buildToolsVersion "25.0.2"

defaultConfig {
    applicationId "teaonly.droideye"
    targetSdkVersion 14

    ndk {
        moduleName "MediaEncoder"
    }
}

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

sourceSets.main {
    jni.srcDirs = [] // This prevents the auto generation of Android.mk
    jniLibs.srcDirs = ['src/main/jniLibs']
}

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

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

}

dependencies {
    compile files('libs/java_websocket.jar')
}

这是我的local.properties:

ndk.dir=C\:\\Users\\Markus\\AppData\\Local\\Android\\Sdk\\ndk-bundle
sdk.dir=C\:\\Users\\Markus\\AppData\\Local\\Android\\Sdk

这是我的项目:

Project Path

1 个答案:

答案 0 :(得分:0)

我认为您的问题是您没有指定Gradle任务的工作目录。即使它正确设置了ndk.dir设置,事实是commandLine将默认为项目目录,其中没有'ndk-build.cmd'文件。因此,只需在您的任务中添加以下行:

workingDir '/Users/Markus/AppData/Local/Android/Sdk/ndk-bundle'

您可以在Gradle文档的以下位置阅读有关此命令以及commandLine的其他Gradle选项的更多信息:

https://docs.gradle.org/current/dsl/org.gradle.api.tasks.Exec.html