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

may*_*ysi 82 android gradle android-studio android-gradle-plugin

错误:

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)
Run Code Online (Sandbox Code Playgroud)

项目结构:

在此输入图像描述

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']
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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
    }
}
Run Code Online (Sandbox Code Playgroud)

settings.gradle

include ':vertretungsplan', ':libraries:actionbarsherlock'
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个错误?

小智 90

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

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

在我的情况下,我做到了这一点,当我导入最后一个时,应用程序编译.所以我认为真正的问题是我一次导入的太多了.但现在一切正常.

  • 如果你使用./gradlew汇编--stacktrace --info进行编译,它会让你知道哪个罐子坏了 (20认同)
  • @Fallenreaper不确定我理解你的问题,我的意思是在你的根项目目录中你有一个exec gradlew文件,如果你从终端或cmd中解雇它,就像我说的那样,你会知道问题所在,然后你就可以解决它了. (2认同)

iro*_*use 68

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

我通过删除app/build目录解决了它,让gradle构建整个项目new.

  • 添加活动以替换主活动时,此处存在同样的问题.我表现得干净但是没用.谢谢你的解决方案. (2认同)

小智 16

您必须检查是否再次导入相同的JAR.在我的情况下,罐子里面有一个类,它被导入另一个罐子里.所以只需检查整个项目中是否包含两次lib/class文件!