错误:任务“:app:dexDebug”执行失败。 com.android.ide.common.process.ProcessException

Posted

技术标签:

【中文标题】错误:任务“:app:dexDebug”执行失败。 com.android.ide.common.process.ProcessException【英文标题】:Error:Execution failed for task ':app:dexDebug'. com.android.ide.common.process.ProcessException 【发布时间】:2015-05-09 04:10:57 【问题描述】:

错误:任务 ':app:dexDebug' 执行失败。

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_40\bin\java.exe'' 完成非零退出值 2

我搜索了所有类似的问题和解决方案,但没有帮助。我希望像你这样的专家出现。

项目代码已经上传到bitbucket:https://tainule@bitbucket.org/tainule/numad-huizhang.git

我有两个模块,应用程序和端点。以下来自模块:应用程序:

apply plugin: 'com.android.application'

android 
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig 
        applicationId "edu.neu.madcourse.huizhang1"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 3
        versionName "2.1"
//        multiDexEnabled true
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        
    


dependencies 


    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile "com.android.support:appcompat-v7:21.0.+"
    compile 'com.google.android.gms:play-services:+'
    compile 'com.google.guava:guava:18.0'
    compile 'com.google.code.gson:gson:1.7.2'
    compile 'org.apache.httpcomponents:httpmime:4.4-beta1'
    compile 'org.apache.httpcomponents:httpclient:4.4-beta1'
    compile 'org.apache.httpcomponents:httpcore:4.4-beta1'
    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'
    compile project(path: ':endpoint', configuration: 'android-endpoints')
    compile files('src/main/res/libs/KeyValueAPI.jar')


以下来自模块端点:

buildscript 
    repositories 
        mavenLocal()
        mavenCentral()
    
    dependencies 
        classpath 'com.google.appengine:gradle-appengine-plugin:1.9.17'
    


repositories 
    mavenCentral();


apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'appengine'

sourceCompatibility = 1.7
targetCompatibility = 1.7

dependencies 
    appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.8'
    compile 'com.google.appengine:appengine-endpoints:1.9.8'
    compile 'com.google.appengine:appengine-endpoints-deps:1.9.8'
    compile 'javax.servlet:servlet-api:2.5'
    compile 'com.googlecode.objectify:objectify:4.0b3'
    compile 'com.ganyo:gcm-server:1.0.2'
//        compile 'com.github.fengdai:alertdialogpro-theme-material:0.1.0'



appengine 
    downloadSdk = true
    appcfg 
        oauth2 = true
    
    endpoints 
        getClientLibsOnBuild = true
        getDiscoveryDocsOnBuild = true
    

【问题讨论】:

如果有任何帮助的机会,您至少需要给我们一些背景知识 嗨,马特,感谢您的回复。可能的原因可能是我添加了一个外部库模块--endpoints。这就是我所知道的。并且代码已经上传到bitbucket,你能帮我吗?tainule@bitbucket.org/tainule/numad-huizhang.git 请在此处发布您的代码(特别是您的 build.gradle)文件的相关部分,作为您问题的一部分。 我做到了。谢谢你的帮助,Yole。 我也遇到了同样的错误,请帮忙提出一些建议来解决它。我没有上传到任何 bitbuket 或其他。 【参考方案1】:

您的 jar 文件或 lib 似乎多次出现。

所以,然后从 lib 文件夹中删除 .jar 文件:

Build > Rebuild

【讨论】:

你是一个救生员。我需要几天时间才能弄清楚这一点。非常感谢。 太好了,在我的情况下这很有意义,因为我们错误地将 app/build 的内容签入到 SVN,这搞砸了我们在本地的构建。 在 AS 1.5 上对我不起作用它成功重建但我尝试运行它我得到与上述问题相同的错误:( 错误:任务 ':ReliantApp:transformClassesWithDexForDebug' 执行失败。 > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0 _60\bin\java.exe'' 以非零退出值 2 结束【参考方案2】:

我遇到了同样的问题错误,我通过添加解决它

defaultConfig         
    // Enabling multidex support.
    multiDexEnabled true

我遇到了这个问题,因为我超过了 Android 规定的 65K 方法 dex 限制,我使用了很多库

【讨论】:

此答案应标记为正确答案。在尝试了上述所有问题之后,这对我有用。我知道这一定是一个糟糕的解决方案,但是使用多个 android 库的人将面临这个问题,这个解决方案对他/她有用。因为这些库使用 v4 或 v7 支持库。因此,在您的项目中,它重复库超过 1 次。 这对我有用,它是所有解决方案中唯一可行的解​​决方案。所有其他用户检查所有其他解决方案,以防它们不起作用,这肯定会起作用。 嗨,我在哪里添加这个? 在您的应用模块的 build.gradle 文件中将其放入 android ... 非常感谢!这绝对应该是正确的答案。【参考方案3】:

我添加它是为了让处于类似情况的人可能会觉得它有帮助。

所以,即使在multiDexEnabled = true 之后,我也遇到了同样的错误。我没有重复的库。上述解决方案均无效。阅读错误日志后,我发现OutOfMemError 问题是主要原因,并想以某种方式更改heap size。因此,这 -

dexOptions 
        preDexLibraries = false
        javaMaxHeapSize "4g"
    

其中“4g”表示HeapSize 4 GB。它奏效了!我希望它也适合你。

【讨论】:

添加后,我必须取出 multiDexEnabled 才能让我的工作。 所以你的应用在没有启用 multiDex 的情况下运行? 是的,如果我启用了 multiDex,我会收到一些我没有时间进一步研究的错误。我现在就接受它,谢谢你的提示。 谢谢!我整天都在解决这个问题。但我只在 gradle 中添加 javaMaxHeapSize "4g" 就可以了。【参考方案4】:

对我来说,/app/libs 中包含同一个库的多个版本。我正在使用 Parse,我同时拥有 ParseFacebookUtilsV3-1.9.0.jarParseFacebookUtilsV4-1.9.0.jar

删除V3 jar 即可解决问题。

【讨论】:

我遇到了同样的问题,非常感谢。【参考方案5】:

最后我通过将 compile 'com.google.guava:guava:18.0 ' 改为 compile 'com.google.guava:guava-jdk5:17.0' 解决了这个问题

【讨论】:

这可能是由于提到的方法限制。旧版本的 Guava 可能包含较少的方法。启用 multidex 可以真正解决这个问题。 就我而言,我已经在使用“com.google.guava:guava:17.0”,但问题是一样的。【参考方案6】:

三个条件可能会导致此问题。

    不同的模块有不同的jar 在libs中已经包含jar,但是在src中还要添加相关源码

    gradle 重复包含,例如:

    编译文件树(包括:['*.jar'],目录:'libs')

    编译文件(‘libs/xxx.jar’)

如果你会看中文,请看这里Error:Execution failed for task ':app:dexDebug'.> com.android.ide.common.process.ProcessException: o

【讨论】:

【参考方案7】:

两次包含相同的课程后我遇到了这个问题

【讨论】:

【参考方案8】:

我遇到了同样的错误信息。我不太确定我的解决方案是否也能解决您的问题。

在项目结构(应用程序)中,我将编译 SDK 版本从 API 22 更改为 API 21,并将构建工具版本从 22.0.0 更改为 21.1.2。

当我下载最新的 API 22 Adroid 5.1 时,我创建的每个项目都在使用这个 API 并导致我出现问题。也许,Android 团队正在寻找解决此问题的方法。

【讨论】:

【参考方案9】:

我最近将我们的一个公司项目从 Eclipse 迁移到了 Android Studio。

我们在迁移过程中也遇到了以下错误:

错误:任务 ':appName:transformClassesWithDexForDebug' 执行失败。 com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:处理'命令'/Library/Java/JavaVirtualMachines/jdk1.7.0_79。 jdk/Contents/Home/bin/java'' 以非零退出值 2 结束

为了解决这个问题,我们必须做一些事情:

    从库中删除/更新重复的 jars/文件

编译 'com.android.support:support-v4:23' 编译 'com.google.android.gms:play-services:9.0.0'

compile 'com.google.android.gms:play-services:9.0.0'

    将 multiDexEnabled 设置为 True

defaultConfig multiDexEnabled true

    增加堆大小:

dexOptions 增量真 javaMaxHeapSize "4g"

【讨论】:

【参考方案10】:

当您有太多对象引用时,也可能出现这种情况。看一下构建的结果,尤其是任务中的 :dex:multiDebug:

写入输出问题:方法引用过多:67114;最大值为 65536。

【讨论】:

【参考方案11】:

尝试将这行代码放在你的主要项目的 gradle 脚本中:

configurations  all*.exclude group: 'com.android.support', module: 'support-v4' 

我有两个库链接到我的项目,它们使用“com.android.support:support-v4:22.0.0”。

希望它对某人有所帮助。

【讨论】:

是的,这是一个非常糟糕的解决方案(抱歉)。虽然,我找到了另一个解决方案。需要将 RecyclerView 包含到我的项目中,并且它需要 support-v4 库。所以我不得不从所有依赖项项目中手动排除 support-v4 lib 并将其添加到我的主 gradle 脚本中(使用 gradle 列出依赖项,这样你就可以看到还有什么使用 support-v4 lib)【参考方案12】:

我通过删除解决了同样的问题:

compile fileTree(include: ['*.jar'], dir: 'libs')

并为每个 jar 文件添加:

compile files('libs/yourjarfile.jar')

【讨论】:

【参考方案13】:

尝试清理并重建项目。我有完全相同的问题,这解决了它。

【讨论】:

你能告诉我如何使用 windows 命令清理 ionic 项目吗?【参考方案14】:

我有同样的问题,并通过将“+”更改为一个确切的数字来解决,例如编译“com.android.support:appcompat-v7:21.0.+”来编译“com.android.support:appcompat- v7:21.0.0”。

这对我有用。 :)

【讨论】:

【参考方案15】:

我变了:

compile 'com.google.android.gms:play-services:9.0.0'

compile 'com.google.android.gms:play-services-auth:9.0.0'

到:

compile 'com.google.android.gms:play-services-maps:9.0.0'

compile 'com.google.android.gms:play-services-auth:9.0.0'

【讨论】:

【参考方案16】:

我在将 eclipse 项目转换为 Android studio 时遇到了同样的问题。在我的情况下,我在 eclipse 项目中有设计库 jar 文件,我在 gradle 中添加了相同的依赖项导致了错误。我通过删除 jar 来解决它库。

【讨论】:

以上是关于错误:任务“:app:dexDebug”执行失败。 com.android.ide.common.process.ProcessException的主要内容,如果未能解决你的问题,请参考以下文章

任务 ':app:dexDebug' Android Studio 执行失败

使用新 Android Studio 项目的任务“:app:dexDebug”的 Gradle 执行失败

Android Studio 构建失败并出现异常任务“:app:dexDebug”执行失败

:app:dexDebug ExecException 以非零退出值 2 结束

Android Studio:意外的***异常:

Android Studio 1.0 RC 4 构建错误