Android Studio:Gradle-构建失败-任务':dexDebug'的执行失败


82

错误:

Gradle: Execution failed for task ':vertretungsplan:dexDebug'.
> Failed to run command:
    P:\Android-Studio\sdk\build-tools\18.0.1\dx.bat --dex --output P:\Projekte\VertretungsplanProject\vertretungsplan\build\libs\vertretungsplan-debug.dex P:\Projekte\VertretungsplanProject\vertretungsplan\build\classes\debug P:\Projekte\VertretungsplanProject\vertretungsplan\build\dependency-cache\debug P:\Android-Studio\sdk\extras\android\m2repository\com\android\support\support-v4\18.0.0\support-v4-18.0.0.jar P:\Projekte\VertretungsplanProject\vertretungsplan\libs\commons-io-2.4.jar P:\Projekte\VertretungsplanProject\vertretungsplan\build\exploded-bundles\VertretungsplanProjectLibrariesActionbarsherlockUnspecified.aar\classes.jar
Error Code:
    2
Output:
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/LoginActivity$2.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/LoginActivity$2.class
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/MainActivity$1.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/MainActivity$1.class
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/YQL/YqlVplanParser.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/YQL/YqlVplanParser.class
    3 warnings
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
        at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
        at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
        at com.android.dx.command.dexer.Main.run(Main.java:232)
        at com.android.dx.command.dexer.Main.main(Main.java:174)
        at com.android.dx.command.Main.main(Main.java:91)

项目结构:

在此处输入图片说明

build.gradle(actionbarsherlock)

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android-library'

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 11
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            res.srcDirs = ['res']
        }
    }
}

build.gradle(vertretungsplan)

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

dependencies {
    compile files('libs/commons-io-2.4.jar')
    compile project(':libraries:actionbarsherlock')
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 11
    }
}

settings.gradle

include ':vertretungsplan', ':libraries:actionbarsherlock'

如何解决此错误?

Answers:


90

正确的答案是,您的某些jar文件无法编译。您应该进入项目中的build.gradle文件,并查看依赖项。

如果您只是导入一些jar文件,则可以尝试将其删除并一次添加一个。这将帮助您确定其中哪一个导致了错误。

就我而言,我就是这样做的,而当我导入最后一个时,应用程序便进行了编译。所以我认为真正的问题是我一次要导入太多。但是现在一切正常。


20
如果使用./gradlew assemble --stacktrace --info进行编译,它将让您确切知道哪个jar不好
Nir Hartmann

@NirHartmann快速提问,我会在构建gradle中放置的命令吗?我不确定应该放在哪里。
Fallenreaper 2015年

2
@Fallenreaper不确定我是否理解您的问题,我的意思是在您的根项目目录中,您有一个exec gradlew文件,如果您按照我说的那样从终端或cmd中启动它,您会知道问题出在哪里,然后可以对其进行修复。 。
尼尔·哈特曼

@ Fallenreaper-已导航到终端中的gradle / gradle并输入./gradlew汇编--stacktrace --info,但没有这样的目录,这是您在建议中表示的意思吗?
dancebush15年

这是真正帮助充满了对我
bhavesh凯拉

68

在没有值得注意的变化之后,我突然遇到了同样的问题。

我通过删除app/build目录解决了问题,并让gradle新建了整个项目。


2
添加活动以替换主活动时,这里也存在同样的问题。我进行了一次清洁,但没有成功。感谢您的解决方案。
2015年

1
另外,请尝试在您可能要包含在应用程序中的库项目中清理app / build文件夹
Voy

1
很好的尝试,但是它不能解决我的问题:/
Maxime T

1
解决我的问题。谢谢
dian

1
删除构建文件夹确实可以帮助您。
bhavesh kaila

16

您必须检查是否再次导入了相同的JAR。在我的情况下,一个罐子中有一个类,该类正被导入另一个罐子中。因此,只需检查整个项目中是否两次包含任何lib / class文件!


1
从技术上讲,这对我来说是正确的,但是发生的原因是,在向项目添加新活动后,build.gradle文件中的依赖项使android支持库包含了两个版本,两个版本不同。
2014年

解决此问题时我还没有完成,但是这引导我前进。谢谢。
安德里亚斯·鲁道夫

为我解决了一个问题,但是我永远不会想到从错误消息中发现该问题是重复的JAR。我一直在项目级别上将Volley作为模块导入,但是由于我希望能够在使用AS进行构建和使用Cordova进行构建之间进行切换,因此我设置了将Volley作为Cordova插件引入的环境。在某个时刻重新生成平台后,我得到了此错误消息。您对两次导入相同库的评论使我意识到我应该删除“ Volley作为导入库”设置,所以谢谢。
Mark Birbeck 2015年

4

当我尝试使用Java JRE 1.8在eclipse中编译utils库jar并在Android Studio 1.1.0的/ libs /中使用它时,出现了同样的错误。

我将Android Studio设置为使用JDK1.8.0。

我将Eclipse切换为可与JRE 1.7一起使用,并且该错误已修复。Eclipse:窗口->首选项-> Java选项卡->编译器->遵从级别1.7。它很可能会提示您将JRE系统库切换到jdk1.7.x_x。

导出时,您可能需要确保取消选中“ compress jar”。我还没有测试它是否有效。我怀疑这是有关的。


谢谢!这解决了我关于Android Studio 1.4和Gradle实验性0.2.1的问题;)我不得不恢复到JDK 1.7.1,尽管为了完全解决此问题
Stef,2015年

4

我也有同样的问题。就我而言,问题是在重新启动后开始的。我关闭了我的应用程序,然后关闭了Android Studio(在我的情况下为V1.1.0),最后正常关闭了。之后,我修改了一个Java文件以添加RadioGroup对象,然后出现了问题。

我仅在Gradle配置文件中将简单的'0'更改为'1'就解决了我的问题,因为问题的根本原因是在Gradle执行过程中产生的。以前我曾经有版本“ 1.0.0”,然后将其更改为“ 1.1.0”,如图片所示。

Gradle配置的位置已更改 Gradle配置的位置已更改

我从(文件->设置-> Gradle->实验版中获取正确版本的位置 我从(文件->设置-> Gradle->实验版中获取正确版本的位置


更改为gradle toots版本1.1.0对我有用。谢谢!
kalan nawarathne 2015年

4

问题不关乎 Execution failed for task ':dexDebug'

如果您查看上方显示为红色的错误,将会看到此错误

在此处输入图片说明

要永久解决此问题,只需在build.gradle文件中添加以下行

android {
    dexOptions {
        jumboMode = true
    }
}

有关更多详细信息,请检查此问题:此处


3

确保您的AndroidManifest文件在清单节点中包含包名称。设置软件包名称对我来说解决了这个问题。


在我的情况下,包名称在2个库子项目中重复。
sasha_trn 2014年

3

ANDROID STUDIO用户可以尝试以下方法:-

您需要将以下内容添加到gradle文件依赖项中:

compile 'com.android.support:multidex:1.0.0'

然后将以下行(multidex support application)添加到清单的application标签中:

android:name="android.support.multidex.MultiDexApplication"

2

可以通过添加来解决此问题

compile 'com.android.support:support-v4:18.0.0'

到vertretungsplan build.gradle中的依赖项,进行编译,然后删除此行并再次编译。

现在可以了


为什么是“ v4:18.0.0”?为什么不使用'v4:+'
IgorGanapolsky

4
@IgorGanapolsky,因为动态版本通常会导致意外结果。
aga 2014年

1

我遇到了同样的问题,您应该这样做:

File -> Invalidate Caches / Restart


1

我遇到了这个问题,因为我尝试同时使用支持库和appcompat:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.android.support:support-v4:23.1.0'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.google.android.gms:play-services:8.3.0'
}

在删除支持库并更改为旧版本后,它进行了编译:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    /*compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'*/
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.android.support:design:22.2.0'
    compile 'com.google.android.gms:play-services:8.3.0'
}

1

我有两个不兼容的依赖项。

以下依赖项导致了错误。

compile 'com.google.android.gms:play-services-fitness:8.3.0'
compile 'com.google.android.gms:play-services-wearable:8.4.0'

通过将适应性依赖项更改为版本8.4.0,我可以运行该应用程序。

compile 'com.google.android.gms:play-services-fitness:8.4.0'
compile 'com.google.android.gms:play-services-wearable:8.4.0'

0

我发现Android Studio和mircrosoft升级到网络浏览器时遇到了一个非常有趣的问题。我“愚蠢地”升级到了ie的最新版本。当然,Microsoft以其无穷的智慧确切地知道如何处理安全性。当我尝试编译我的应用程序时,我不断收到错误Gradle-构建失败-任务执行失败。在堆栈中查看时,我发现它无法识别java.exe的路径。我发现前一天编译的过程很奇怪。我将JAVA_HOME添加到系统的环境变量中,关闭了Android Studio并重新打开了它。低下,看看防火墙na屏幕是否没有弹出,询问我是否要全部通过jave.exe。

多么集群!


0

(这可能是错误的线程,因为您的问题似乎更具体,但这是我在搜索问题的关键字时发现的线程)

尽管有很多好的提示,但唯一可以帮助我的就是我想分享的东西,以防万一,如果其他所有方法都不起作用:

删除目录中的.gradle目录,然后由Android Studio为您重新构建/重新下载。

对我来说,修复了所有无法通过重新安装Android Studio本身或SDK修复的奇怪错误。


0

从Eclipse IDE导入后,原因可以重复。

dependencies {
compile 'com.github.japgolly.android:svg-android:2.0.5'
compile 'com.google.android.gms:play-services:+'
compile 'com.android.support:appcompat-v7:21.0.3'
compile files('libs/androidannotations-api-2.7.1.jar')
compile files('libs/androidasync-2.1.2.jar')
//compile files('libs/google-play-services.jar')
compile files('libs/universal-image-loader-1.8.2.jar')}

评论后,我遇到了同样的问题:

//compile files('libs/google-play-services.jar')

该应用程序没有错误。


您应该从libs文件夹中删除本地jar,并依赖于Central存储库。
WonderCsabo

0

我遇到了同样的问题。转到actionbarsherlock->模块设置->依赖关系。删除support v4库。在左下方有一个加号按钮,从那里添加1 Library Dependency(选择support-v4)。完成后,让gradle重新同步并清理项目。


0

这里的许多答案都是反复试验,以查找重复的依赖项,但是如果您从该Execution failed for task ':app:dexDebug'.行向上滚动一点,则会提示您重复项

提示错误

就我而言,我遇到以下错误:

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define L/com/parse/AbstractQueryController$1;
...
...
...
Execution failed for task ':app:dexDebug'.

因此,我知道为了修复此错误,我需要找到重复的依赖项来定义 parse.AbstractQueryController

以我为例,我有两个导入的模块正在两个不同的Parse库中加载。使我的项目只加载一个修复了我的问题。


0

当我的一个班级文件中的软件包的拼写错误时,我也遇到了此错误。其中许多答案会立即跳到Jar文件中,但我还将检查以确保您的软件包拼写正确。


0

只需添加build.gradle

编译'com.parse.bolts:bolts-android:1. +'

编译'com.parse:parse-android:1.11.0'

并与Gradle文件同步项目,在此处输入图片说明 但不要在libs中添加解析jar :) OKK


0

如果您还使用DaggerButterknife应该将番石榴添加为对build.gradle主文件的依赖,例如classpath:

com.google.guava:guava:20.0

另一方面,如果您在Gradle守护程序的较大堆上遇到问题,可以增加添加到radle文件中:

 dexOptions {
        javaMaxHeapSize "4g"
    } 


-1

在Android Studio中,使用菜单栏上的Build清理项目可解决许多错误情况,因此在这种情况下也是如此。


您是否有任何有关为何可以解决此问题的信息?
格雷格·贝尔

1
因为您不能以任何方式排除build.gradle中的库,并且接受的解决方案还告诉我们删除并添加无法编译的jar文件。因此,不是那些引起麻烦的jar文件,他们在问题出现之前就在工作,而在我使用我提到的方法解决问题之后仍然在工作,因此这是一个构建问题,并且代码没有得到编译。因此,当构建失败时,最好的方法是清理项目并重新构建。谢谢!
code4salvation

对于大多数人来说,如果他们要构建项目,则会显示此消息。所以这绝对不是解决方案
maysi 16-4-11

1
我希望您能读到答案,这是由于依赖项未编译而导致构建失败,因此仅当您“构建项目”时才会出现。要与Android Studio保持同步,还请确保将Java更新到最新可用版本coz前后都有不同的故事。
code4salvation 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.