Android Studio: Gradle-build 失败——任务“ : dexDebug”的执行失败

错误:

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

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']
}
}
}

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
}
}

设置,等级

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

我如何修复这个错误?

180592 次浏览

可以通过添加

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

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

现在起作用了

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

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

在我的例子中,我就是这样做的,当我导入最后一个时,应用程序编译。所以我认为真正的问题是我一次进口了太多。但现在一切都很顺利。

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

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

我发现 Android Studio 和微软的网页浏览器升级有一个非常有趣的问题。我“愚蠢地”升级到了 ie 的最新版本。当然,以微软无限的智慧,他们完全知道如何处理安全问题。当我尝试编译我的应用程序时,我总是得到错误的结果——编译失败——任务执行失败。在堆栈中我看到它没有识别到 java.exe 的路径。我发现这很奇怪,因为我前一天才能编译。我将 JAVA _ HOME 添加到系统的 env vars 中,关闭 Android Studio 并重新打开它。如果防火墙唠叨屏幕没有弹出问我是否希望所有 jave.exe 通过。

这么多人!

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

尽管有很多好的提示,但唯一能帮助我的是,如果其他方法都不管用,我还是想分享一下:

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

修正了所有的怪异错误,这些错误无论是通过重新安装 Android Studio 本身还是 SDK 都无法修复。

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

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

我将 Eclipse 切换到使用 JRE 1.7,并修复了错误。 Eclipse: Window-> Preferences-> Java tab-> Compiler-> Compliance level 1.7.它很可能会提示您将 JRE 系统库切换到 jdk1.7.x _ x。

您可能需要确保在导出时取消选中“压缩 jar”。我还没测试是否有效。我怀疑这两者之间有关联。

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

我解决了这个问题,只是在 Gradle 配置文件中将“0”改为“1”,因为问题的根本原因是在 Gradle 执行过程中产生的。以前我使用的版本是1.0.0,然后我把它改成了1.1.0,如图所示。

格拉德配置的位置改变了 Location of the Gradle configuration a changed

我选择正确版本的位置(文件-> 设置-> 级别-> 实验 Location where I took the right version from (File -> Settings -> Gradle -> Experimental

原因是从 EclipseIDE 导入后可以复制库。

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')

这个应用程序没有错误。

在没有明显变化之后,我突然有了同样的问题。

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

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

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

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

enter image description here

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

android {
dexOptions {
jumboMode = true
}
}

有关进一步的详细信息,请查看以下问题: 给你

在我的情况下,我做了 Build > Clean Project和它的工作!

这里的许多答案都是反复试验来找到重复的依赖项,但是如果你从 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'.

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

在我的例子中,我有两个导入的模块,它们正在两个不同的 Parse 库中加载。让我的项目只加载一个修复我的问题。

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

File -> Invalidate Caches / Restart

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

ANDROID STUDIO Users 尝试这样做:-

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

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

然后将下面一行(multidex 支持应用程序)添加到您的清单的 application标记中:

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

我之所以有这个问题,是因为我试图同时使用支持库和 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'
}

只要加上 build. gradle

编译‘ com.parse.bolt: bolt-android: 1. +’

编译‘ com.parse: parse-android: 1.11.0’

同步项目与 Gradle 文件 < a href = “ https://i.stack.imgur.com/EG6Cm.png”rel = “ nofollow noReferrer”> < img src = “ https://i.stack.imgur.com/EG6Cm.png”alt = “ enter image description here”> 但是不要在 libs 中添加 parse Jar:) OK

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

下面的依赖项导致了错误。

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'

在 Android Studio 中,使用 Build in Menu Bar 清理项目可以处理许多错误场景,在本例中也是如此。

如果你也在使用 Dagger或者 Butterknife,你应该把番石榴作为一个依赖项添加到你的 build.gradle主文件,比如类路径:

com.google.guava:guava:20.0

另一方面,如果 Gradle 守护进程的堆比较大,那么可以增加对 radle文件的添加:

 dexOptions {
javaMaxHeapSize "4g"
}