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

时间:2013-08-02 16:29:22

标签: android gradle android-studio android-gradle

错误:

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)

项目结构:

enter image description here

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'

如何解决此错误?

22 个答案:

答案 0 :(得分:89)

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

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

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

答案 1 :(得分:68)

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

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

答案 2 :(得分:16)

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

答案 3 :(得分:4)

问题不在于Execution failed for task ':dexDebug'

如果你看上面的错误显示为红色,你会看到这个

enter image description here

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

即可
android {
    dexOptions {
        jumboMode = true
    }
}

有关详细信息,请查看以下问题:here

答案 4 :(得分:4)

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

我解决了我的问题,只改变了一个简单的' 0'对于一个' 1'在我的Gradle配置文件中,因为问题的根本原因是在Gradle执行过程中生成的。以前我曾经有版本' 1.0.0'然后我将其改为' 1.1.0',如图所示。

Gradle配置的位置已更改 Location of the Gradle configuration a changed

我从中获取正确版本的位置(文件 - >设置 - > Gradle - >实验 Location where I took the right version from (File -> Settings -> Gradle -> Experimental

答案 5 :(得分:4)

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

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

我将Eclipse切换为使用JRE 1.7,错误已修复。 Eclipse:Window-> Preferences-> Java tab-> Compiler - >合规等级1.7。它很可能会提示您将JRE系统库切换到jdk1.7.x_x。

您可能需要确保取消选中'压缩jar'当你导出。我还没有测试它是否有效果。我怀疑它是否相关。

答案 6 :(得分:3)

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

答案 7 :(得分:3)

ANDROID STUDIO用户试试这个: -

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

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

然后在清单的application标记中添加以下行(multidex支持应用程序):

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

答案 8 :(得分:2)

可以通过添加

来解决此问题
compile 'com.android.support:support-v4:18.0.0'

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

现在可行了

答案 9 :(得分:1)

我有同样的问题,你应该这样做:

File -> Invalidate Caches / Restart

答案 10 :(得分: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'
}

答案 11 :(得分: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'

答案 12 :(得分:0)

(这可能是错误的主题,因为您的问题似乎更具体,但它是我在搜索问题的关键字时找到的主题)

尽管提供了很好的提示,但唯一能帮助我的事情,以及我想分享以防万一,如果其他一切都不起作用:

删除主目录中的 .gradle 目录,并让Android Studio为您重新构建/重新下载。

通过重新安装Android Studio本身和SDK,修复了我无法修复的各种奇怪错误。

答案 13 :(得分:0)

我发现了Android Studio和mircrosoft升级到Web浏览器的一个非常有趣的问题。我升级了#34;愚蠢的#34;到最新版本的ie。当然,微软以其无限的智慧知道如何处理安全问题。当我尝试编译我的应用程序时,我一直收到错误Gradle - 构建失败 - 执行失败的任务。在堆栈中查看我发现它无法识别java.exe的路径。我发现这很奇怪,因为我只能在前一天编译。我将JAVA_HOME添加到系统的env vars中,关闭Android Studio并重新打开它。低,看,如果防火墙唠叨屏幕没有弹出询问我是否想要通过所有jave.exe。

什么是集群!

答案 14 :(得分: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')

该应用程序没有错误。

答案 15 :(得分:0)

我遇到了同样的问题。通过这样做解决了。 转到actionbarsherlock - >模块设置 - >依赖项。删除支持v4库。在左下角有一个加号按钮,从那里添加1个库依赖项(选择support-v4)。 一旦完成,就让gradle重新同步并清理项目。

答案 16 :(得分:0)

在我的情况下,我做了z = df.x.map(math.sin) df['y']=[sum(z[:i]*15**np.arange(int(i)+1)[::-1]) for i,r in df.iterrows()] In [258]: df Out[258]: x y 0 10 -0.544021 1 20 -7.247371 2 30 -109.698603 3 40 -1644.733929 并且它有效!

答案 17 :(得分:0)

这里的许多答案都是试错,以找到重复的依赖关系但是如果你从Execution failed for task ':app:dexDebug'.行稍微向上滚动,它会给你一个重复的提示

error with a hint

在我的情况下,我遇到以下错误:

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库中。使我的项目只加载一个修复我的问题。

答案 18 :(得分:0)

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

答案 19 :(得分:0)

只需添加build.gradle

即可

compile'c​​om.parse.bolts:bolts-android:1。+'

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

并使用Gradle文件enter image description here同步项目 但是不要在库中添加解析Jar :) OKK

答案 20 :(得分:0)

如果您还在使用DaggerButterknife,则应将guava添加为build.gradle主文件的依赖项,如classpath:

com.google.guava:guava:20.0

另一方面,如果您在使用Gradle守护程序的较大堆时出现问题,则可以增加对radle文件的添加:

 dexOptions {
        javaMaxHeapSize "4g"
    } 

答案 21 :(得分:-1)

使用内置菜单栏清理项目适用于Android Studio中的许多错误情况,因此在这种情况下也是如此。