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,不在运行时使用