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
它将构建并显示更多日志。您会在代码中发现错误。
我将我正在处理的项目从 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
它将构建并显示更多日志。您会在代码中发现错误。