Android nkd构建脚本完成并出现错误(退出值2)
每次我尝试构建使用ndk运行本机代码的android应用程序时,都会出现以下错误: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文件
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
,就会出现详细的错误。看看这个链接:实际上,还有另一个非常有价值的工具:invokendk build V=1
,您将看到所有编译/链接命令以及所有参数,因为它们实际上是由ndk build执行的!