java.util.zip.ZipException:在packageAllDebugClassesForMultiDex期间重复条目

我不确定这个错误是什么意思。

Execution failed for task ':excelSior:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: duplicate entry: android/support/v4/util/TimeUtils.class 

我目前使用android-support-v4.jar作为我的库

 dependencies { compile project(':addThisSDK') compile project(':centeredContentButton') compile project(':googleplayservices_lib') compile files('libs/adxtag2.4.6.jar') compile files('libs/android-support-v4.jar') compile files('libs/aws-android-sdk-1.7.1.1-debug.jar') compile files('libs/commons-lang-2.6.jar') compile files('libs/crittercism_v4_4_0_sdkonly.jar') compile files('libs/dd-plist.jar') compile files('libs/FiksuAndroidSDK_4.1.1.jar') compile files('libs/iqengines-sdk-barcode.jar') compile files('libs/irEventTracker-1.2.jar') compile files('libs/jolt-core-0.0.7.jar') compile files('libs/json-utils-0.0.7.jar') compile files('libs/jsoup-1.7.2.jar') compile files('libs/kooaba-api-v4-java.jar') compile 'com.android.support:multidex:1.0.0' } 

错误在gradle同步期间不显示。 正当我尝试运行该应用程序

可能是什么问题呢?

你需要检查你是否有插入v4库和编译库。 您的应用程序或依赖程序中不得有重复的库。

删除重复库,以便只剩下一个V4。

在你的应用程序的dir build.gradle文件中添加这个命令:

 android{ configurations { all*.exclude group: 'com.android.support', module: 'support-v4' all*.exclude group: 'com.android.support', module: 'support-annotations' } ] 

它适合我! 你可以试试!

您现在可能已经修复了这个问题,但是这样做不会一直没有答案,请尝试添加到您的build.gradle

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

重新导入旧的eclipse项目时,我也碰到过这种问题。 它在项目中发生了一些老的依赖作为jar文件。

只是删除

编译fileTree(dir:'libs',include:'* .jar')

在gradle文件中

并在gradle文件中添加依赖项。

它适用于我..

在我的情况下,在build.gradle中设置multiDexEnable=true后,出现提到的“重复项”错误。

为了完全解决这个错误,首先看看使用超过64K方法configuration应用程序 (特别是“用Gradleconfiguration你的应用程序的Multidex”)。

此外,在Android Studio中使用ctrl + nsearch导致“重复条目”错误的类的出现。 确定包含重复的模块和依赖项,并将其从构build中排除,例如:

 compile ('org.roboguice:roboguice:2.0') { exclude module: 'support-v4' } 

我不得不尝试多个模块标签,直到它工作。 排除“support-v4”可解决与“java.util.zip.ZipException:重复条目:android / support / v4 / *”相关的问题

我的理解是,有相同的API重复引用(可能不同的版本号)。 从命令行构build时,应该比较容易debugging。

尝试./gradlew yourBuildVariantName --debug

违规项目将是第一次失败。 一个例子可能如下所示:

 14:32:29.171 [INFO] [org.gradle.api.Task] INPUT: /Users/mydir/Documents/androidApp/BaseApp/build/intermediates/exploded-aar/theOffendingAAR/libs/google-play-services.jar 14:32:29.171 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Finished executing task ':BaseApp:packageAllyourBuildVariantNameClassesForMultiDex' 14:32:29.172 [LIFECYCLE] [class org.gradle.TaskExecutionLogger] :BaseApp:packageAllyourBuildVariantNameClassesForMultiDex FAILED' 

在上面的例子中,我包含在libs目录(theOffendingAAR)中的aar文件包含了Google Play Services jar(是的,我知道),而我的BaseApp构build文件使用了位置服务:

 compile 'com.google.android.gms:play-services-location:6.5.87' 

您可以安全地从您的构build文件中删除有问题的项目,清理并重build(如有必要,重复)。

检查你的依赖版本,你必须有兼容的版本,特别注意com.google包,必须有相同的版本,如:

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

两者都是8.3.0,如果你有另一个版本的编译将会抛出这个exception。

简单地从依赖关系gardle.project中删除你的Jar文件为v7并运行你的项目

对于Expose.class错误,即

java.util.zip.ZipException:重复条目:com / google / gson / annotations / Expose.class

使用下面的代码

 configurations { all*.exclude module: 'gson' } 

找出lib取决于支持v4,并排除它。

build.gradle代码是这样的:

 androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.1') { // http://stackoverflow.com/a/30931887/5210 exclude group: 'com.android.support', module: 'appcompat' exclude group: 'com.android.support', module: 'support-v4' exclude module: 'recyclerview-v7' } 

在我的情况下,lib'espresso'有一个名为support-v4的jar,在我的项目'app'中有相同的support-v4,在导入espresso时排除support-v4。

PS:看来compile project不能与exclude工作

对于错误:执行失败的任务':app:transformClassesWithJarMergingForDebug'com.android.build.api.transform.TransformException java.util.zip.ZipException重复条目com / google / gson / annotations / Expose.class

这是我做的:

1)删除gson-2.5.jar文件。 2)configuration{all * .exclude模块:'gson-2.5'}

我遇到了这个问题,因为我已经手动复制库中的jar以及在gradle文件中提到的依赖。 你也检查你的项目结构,是否相同的jar文件被复制到任何其他文件夹,如库或项目文件夹。

升级android SDK后,我有同样的问题。 我能够在buildToolsVersion '23.0.1'运行应用程序,当我更改为buildToolsVersion '24.0.3'时,出现同样的错误buildToolsVersion '24.0.3'

我解决了这个问题,通过使用compileSdkVersion 24将我的java版本从1.7更新到1.8

这个问题花了我一整天的时间。 我最终将firebase-ui库版本从2.0.0降级到1.2.0,并在Project级别build.gradle文件中添加了以下代码:

 allprojects { repositories { jcenter() // Add the following code to your project level build.gradle maven { url 'https://maven.fabric.io/public' } } } 

这是因为你已经添加了一个库,并且不止一次地赋予它对模块的依赖。

在我的情况下,我已经添加了一个库作为一个模块和gradle依赖两个。

删除添加库的一个来源(我删除了gradle依赖)解决了我的问题。

尝试这个:

 android { configurations { all*.exclude module: 'PhotoView' //去除重复依赖库} } 
 provided 'com.alibaba:fastjson:1.2.17' 

我用提供的,这个jar参与build,不在运行时使用