Android Studio失败的构buildNDK项目非零退出值

我将一个正在从Eclipse Android SDK环境开发的项目导入到新的Android Studio中。 试图运行该项目我得到这个

Error:Execution failed for task ':app:compileDebugNdk'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'ndk/ndk-build'' finished with non-zero exit value 2 

所以首先对我来说,看到这个错误是奇怪的,因为之前在Eclipse的Android SDK中工作,我自己运行了ndk-build,我仍然这样做。 那么Android Studio是否为我运行ndk-build? 因为当我在terminal上运行它时,我完全没有问题,在这里它告诉我糟糕的退出价值。

然后我在互联网上search,发现一个“快速修复”,即创build一个空的.c文件,因为你不能build立/运行没有.c文件的ndk项目。 这毫不奇怪,不适合我,因为我们在.jni文件夹中有很多.c文件。

只要提到我在Yosemite的Macbook Pro上,这个项目本身就没有问题。

在此先感谢您的帮助。

Solutions Collecting From Web of "Android Studio失败的构buildNDK项目非零退出值"

这是Android Studio的已知问题,由于支持NDK的项目非常有限。 回答你的问题:是的,Android Studio现在自己运行ndk-build,但是它忽略了现有的Android.mk并且在运行中生成一个(对于任何不重要的启用NDK的项目都会产生错误)。 实际上,解决这个问题的最好方法是禁用Android Studio的有限的NDK支持,并从gradle脚本中调用ndk-build。 在这里我已经描述了更详细的内容,以及如何修正它。

为简单sourceSets.main.jni.srcDirs = [] ,你可以尝试在build.gradle文件中插入sourceSets.main.jni.srcDirs = []android块。 这将告诉gradle以不同的path查找你的C ++文件。

您可以禁用compileDebugNdk ,但仍然可以在Android Studio中看到jni文件夹。 在您的build.gradle中 ,添加以下子句:

 tasks.all { task -> if (task.name.startsWith('compile') && task.name.endsWith('Ndk')) { task.enabled = false } } 

遇到同样的错误导入项目从Windows到Mac时,我尝试了所有上述解决scheme,没有工作。 最后注意到有导致这个错误的“多个目标模式”。

解决scheme :删除NDK中的“obj”文件夹并重build。

完成!

我差不多尝试了所有的解决scheme 我使用Windows 10,Android Studio 1.5.1和唯一的工作,是这里的解决scheme( http://answers.opencv.org/question/58551/androidstudiondk-finished-with-non-zero-exit-value2/

在Apps> build.gradle中,在android对象下添加这个。

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

在此版本的Android Studio中,在文件>项目结构> NDKpath中添加NDKpath会自动将其添加到local.properties文件,您不需要编辑任何其他内容。

要看到什么是确切的问题做这些:
1-确保你已经正确设置了ndkpath,例如在我的项目中,我把ndk.dir=/usr/local/opt/android-ndk-r13b放在local.properties文件中
2-转到您的Android应用程序的应用程序目录
3-运行以下命令: <ndk_build_path> -C <jni_path> NDK_OUT=<jniLibDir> all NDK_DEBUG=1示例:

 /usr/local/opt/android-ndk-r13b/ndk-build -C /MYAPP/app/src/main/jni -j 4 NDK_OUT=../jniLibs all NDK_DEBUG=1 

那么你可以看到出了什么问题。