Android Studio 未能构建 NDK 项目非零退出值

Android Studio failed build NDK project non-zero exit value

我将我正在处理的项目从 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 运行ning ndk-build 现在对我来说也是如此吗?因为当我在终端 运行 它时我一点问题都没有,这里它告诉我错误的退出值。

然后在网上搜索了一下,找到了一个"quick fix",就是创建一个空的.c文件,因为没有.c文件的ndk工程是不能build/run的。毫不奇怪,这对我不起作用,因为我们在 .jni 文件夹中有很多 .c 文件。

顺便提一下,我是Yosemite下的Macbook Pro,项目本身应该没有问题。

在此先感谢您的帮助。

这是 Android Studio 的已知问题,由启用 NDK 的项目的支持非常有限引起。回答你的问题:是的,Android Studio 现在 运行 ndk-build 是独立的,但它会忽略现有的 Android.mk 并即时生成一个(并且对任何非琐碎的支持 NDK 的项目)。实际上,解决此问题的最佳方法是禁用 Android Studio 有限的 NDK 支持并从 gradle 脚本调用 ndk-build。 Here 我已经更详细地描述了它以及如何修复它。

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

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

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

我几乎尝试了所有可用的解决方案。我使用 Windows 10,Android Studio 1.5.1,唯一有效的是这里的解决方案 (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 中,在“文件”>“项目结构”>“NDK 路径”中添加 NDK 路径会自动将其添加到 local.properties 文件中,您 无需编辑任何内容否则。

要查看确切的问题是什么,请执行以下操作:
1- 确保你已经正确设置了 ndk 路径,例如在我的项目中我把 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

然后你就可以看到哪里出了问题。

将项目从 windows 导入到 mac 时遇到同样的错误,我尝试了上述所有解决方案,但没有奏效。最后注意到有 "multiple target patterns" 导致了这个错误。

解决方案:删除 NDK 中的 "obj" 文件夹并重建。

完成!!

我遇到了同样的问题并尝试了很多方法但都没有用,我发现:

命令行 ndkBuildPath、'-j8'、'-C'、文件('src/main').absolutePath

请试试这个:

转到 src/main/jni,打开终端并 运行 命令:/home/.../Android/Sdk/ndk-bundle/ndk-build

它将构建并显示更多日志。您会在代码中发现错误。