:app:dexDebug ExecException 以非零退出值 2 结束
Posted
技术标签:
【中文标题】:app:dexDebug ExecException 以非零退出值 2 结束【英文标题】::app:dexDebug ExecException finished with non-zero exit value 2 【发布时间】:2015-07-12 02:56:08 【问题描述】:谁能帮我解决以下错误。当我清理项目时,它没有显示任何错误,但每次我尝试运行时都会收到此消息。
错误:任务 ':app:dexDebug' 执行失败。
com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_45\bin\java.exe'' 完成非零退出值 2
应用程序运行时没有错误,但是当我的系统崩溃并重新启动 android studio 时,我几乎没有更新 Android API 22。更新后,应用程序不断给我这个错误消息。我下载了 JDK 8 并尝试运行但没有成功。后来我在这篇堆栈帖子之后降级到 JDK 7,但仍然没有修复它。 Is it possible to use Java 8 for Android development?
我查看了许多类似的问题,但没有一个对我有用。在堆栈上发现的一些类似问题是
why java.exe exit with value 1 in android studio
Error:Execution failed for task ':app:dexDebug'. > comcommand finished with non-zero exit value 2
Java finished with non-zero exit value 2 - Android Gradle
java.exe finished with non-zero exit value 2
Process 'command' C: \ Program Files \ Java \ jdk1.8.0_31 \ bin \ java.exe '' finished with a non -zero exit value 2
我查看了 gradle build 中的依赖关系,看看是否有任何冲突,但没有发现。
我什至尝试将代码复制到一个新项目中并运行它,但仍然没有成功。遇到过同样问题并解决了的人请帮帮我。
【问题讨论】:
【参考方案1】:经过几天的尝试终于可以解决这个问题。我的 .jar 文件之一的问题。我不得不取出每个罐子并一一检查,直到找到它。我删除了 .jar 文件并清理了我的项目并成功运行。如果有人遇到类似问题,请一一检查您的 jar 文件。
【讨论】:
是重复库的问题?? 你甚至不需要一一尝试!!如果你仔细阅读日志,你会发现问题出在哪里 干得好,解决方案是:删除所有 jars,然后添加 1 到 1 和工作 :) @BhaveshHirpara 是的,在我的情况下重复库。有 Parse lib .jar 并在 gradle build 中声明。【参考方案2】:我有同样的错误
app:dexDebug ExecException 以非零退出值 2 结束
我通过添加这行代码来解决它
defaultConfig
multiDexEnabled true
原因是我使用了太多的库
希望这篇文章对大家有所帮助
【讨论】:
此代码进入您的 gradle 构建文件,更多信息请参见:developer.android.com/tools/building/multidex.html【参考方案3】:当我将 google play 服务编译到我的依赖项时,我遇到了同样的问题。
我的错误是我像这样编译整个包
编译'com.google.android.gms:play-services:8.3.0'
当我尝试选择性编译时,它起作用了。在我的情况下,我使用的是谷歌登录,所以它必须是
编译 'com.google.android.gms:play-services-auth:8.3.0'。
更多细节在文档中。 https://developers.google.com/android/guides/setup#split
希望有一天这会对某人有所帮助:)
【讨论】:
为我工作,谢谢。【参考方案4】:我知道已经很晚了。 但这对我来说确实有效。
1. Build > Clean Project
2. Close gradle daemon processes (ps -e| grep gradle //this will list gradle processes)
3. File > Invalidate caches & Restart
我希望这对每个人都有效。
【讨论】:
【参考方案5】:为未来的读者。如果您使用自己的 AAR 并升级了具有共享依赖项的 AAR,您也可以尝试清理项目。在 Android Studio“构建”->“清理项目”中。
这为我解决了这个问题,所以我建议在开始挖掘依赖项之前快速尝试一下。
【讨论】:
如果 AAR 是源代码控制的一部分,并且由其他开发人员推动,这种情况会发生得更多。 (切换到本地 maven 服务器)【参考方案6】:对我来说,解决方案是删除不必要/重复的依赖项。这是其他人在此处提供的类似解决方案,但与其他人提供的解决方案并不完全相同。
由于我已经在要编译的文件列表中包含 *.jar 文件,因此不需要在依赖项列表中添加其他条目。
之前:
dependencies
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.parse.bolts:bolts-android:1.+'
compile fileTree(dir: 'libs', include: 'Parse-*.jar')
之后:
dependencies
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
【讨论】:
【参考方案7】:删除
compile 'com.parse:parse-android:1.+'
添加此行compile fileTree(dir: 'libs', include: ['Parse-*.jar'])
最后会是这个样子
dependencies
compile fileTree(dir: 'libs', include: ['Parse-*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.facebook.android:facebook-android-sdk:4.5.0'
compile 'com.android.support:design:22.2.0'
compile 'com.parse.bolts:bolts-android:1.+'
【讨论】:
【参考方案8】:我遇到了同样的问题,只是我做了 Biuld--> Rebiuld 项目,它又可以工作了;)
【讨论】:
【参考方案9】:我在我的 android 项目中使用了 robolectric 依赖项。我删除了 gradle 中的所有 robolectric 依赖项并删除了所有我的 robolectric 测试,然后我构建了应用程序,最后我可以运行 android 项目。希望这对我们有用。
【讨论】:
【参考方案10】:我在尝试将SignalR Java client 库添加到我的项目依赖项时遇到了同样的问题。我首先将我的应用程序的目标 JDK 从 1.8.0_XX 更改为 1.7.0_XX,但它不起作用。然后我将 SignalR 项目也更改为针对 1.7.0_XX,重新构建并将其添加到我的项目的 libs 文件夹而不是第一个构建(在 1.8.0_XX 中),并且奇迹般地工作。
【讨论】:
【参考方案11】:对我来说,问题在于我使用了不同版本的“Google Play 服务子 API”
之前: Click to see the image
之后: Click to see the image
【讨论】:
【参考方案12】:检查是否有 2 个同名的类。每个类名都应该是唯一的。
【讨论】:
【参考方案13】:也许你遇到的这个问题意味着你不止一次添加了同一个 liberay 文件
【讨论】:
以上是关于:app:dexDebug ExecException 以非零退出值 2 结束的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio 构建失败并出现异常任务“:app:dexDebug”执行失败
使用新 Android Studio 项目的任务“:app:dexDebug”的 Gradle 执行失败
错误:任务“:app:dexDebug”执行失败。 com.android.ide.common.process.ProcessException