Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android nkd构建脚本完成并出现错误(退出值2)_Android_Intellij Idea_Android Ndk_Java Native Interface_Ndk Build - Fatal编程技术网

Android nkd构建脚本完成并出现错误(退出值2)

Android nkd构建脚本完成并出现错误(退出值2),android,intellij-idea,android-ndk,java-native-interface,ndk-build,Android,Intellij Idea,Android Ndk,Java Native Interface,Ndk Build,每次我尝试构建使用ndk运行本机代码的android应用程序时,都会出现以下错误: Error:Gradle: Execution failed for task ':sampleNDK:ndkBuild'. > Process 'command 'C:\NDK\android-ndk-r10e/ndk-build.cmd'' finished with non-zero exit value 2 我使用Intellij和grandle项目。我认为该错误出现在build.gradle文件

每次我尝试构建使用ndk运行本机代码的android应用程序时,都会出现以下错误:

Error:Gradle: Execution failed for task ':sampleNDK:ndkBuild'.
> Process 'command 'C:\NDK\android-ndk-r10e/ndk-build.cmd'' finished with non-zero exit value 2
我使用Intellij和grandle项目。我认为该错误出现在build.gradle文件中的该函数中:

task ndkBuild(type: Exec) {
    def ndkDir = plugins.getPlugin('com.android.application').sdkHandler.getNdkFolder()

    if(org.gradle.internal.os.OperatingSystem.current().windows){
        commandLine "$ndkDir/ndk-build.cmd", 'NDK_PROJECT_PATH=src/main'
        //does not work too
        //commandLine "$ndkDir\\ndk-build.cmd", 'NDK_PROJECT_PATH=src/main'
    }else{
        commandLine "$ndkDir/ndk-build", 'NDK_PROJECT_PATH=src/main'
    }
}
事实上,我正在使用windows,我认为错误出现在if案例中

有人知道什么地方出了问题,或者我能避免什么失败吗

更新 这就是整个构建脚本。也许这会有帮助

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.1.1'
    }
}
apply plugin: 'com.android.application'

repositories {
    jcenter()
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.1.0"

    defaultConfig {
        applicationId "de.anmi.android.samplendk"
        minSdkVersion 15
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }

    sourceSets.main.jni.srcDirs = []
    sourceSets.main.jniLibs.srcDirs = ['src/main/libs']

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_6
        targetCompatibility JavaVersion.VERSION_1_6
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

task ndkBuild(type: Exec) {
    // http://stackoverflow.com/questions/28615439/android-gradle-plugin-1-1-0-getndkfolder-not-found-anymore-any-replacement
    def ndkDir = plugins.getPlugin('com.android.application').sdkHandler.getNdkFolder()

    if (org.gradle.internal.os.OperatingSystem.current().windows) {
        commandLine "$ndkDir/ndk-build.cmd", 'NDK_PROJECT_PATH=src/main'
//does not work too
//        commandLine "$ndkDir\\ndk-build.cmd", 'NDK_PROJECT_PATH=src/main'
    } else {
        commandLine "$ndkDir/ndk-build", 'NDK_PROJECT_PATH=src/main'
    }
}

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

你用的是哪个安卓插件?也许它会帮助你应用我提出的混合解决方案。@AlexCohn我不确定我是否正确理解了你的问题。android插件是什么意思?试着在命令行上运行
ndk build.cmd
。它完成得正确吗?谢谢,这很有帮助!最后,我在c文件中的import语句出现了拼写错误。对于每个有相同问题的人来说:如果从命令行调用
ndk build.cmd
,就会出现详细的错误。看看这个链接:实际上,还有另一个非常有价值的工具:invoke
ndk build V=1
,您将看到所有编译/链接命令以及所有参数,因为它们实际上是由ndk build执行的!