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


117

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

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同步期间不会显示错误。就在我尝试运行应用程序时

可能是什么问题呢?


1
当您的任何其他jar依赖项具有相同的类时,就会出现错误,请确保您未同时将支持jar作为gradle和jar依赖项添加。请在问题中包括完全依赖项关闭。
pyus13

@ pyus13谢谢。我已经更新了问题。这是我的完整依赖列表
bman

1
您的项目中有3个模块依赖项,因此请确保其中只有一个具有support-v4作为依赖项。
pyus13 2014年

请参阅我的答案在:stackoverflow.com/questions/28168063/...
托默

错误:任务':Mulugu Astro:transformClassesWithJarMergingForDebug'的执行失败。> com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复输入:android / support / v4 / view / ViewPager $ MyAccessibilityDelegate.class
Harsha

Answers:


64

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

删除重复库,以便仅保留一个V4。

在您的应用程序目录build.gradle文件中,添加以下命令:

android{


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

}

这个对我有用!你可以试试!


19
添加此片段后,无法获得v4的支持,有什么想法吗?
Nisarg

@Nisarg也发生在我身上。
CJ_COIMBRA

@Nisarg可以使用gradle重新编译程序。
GeekHades

@Nisarg能否请您帮我重新编译一次,我也遇到了同样的问题,您的片段和任务堆栈生成器已停止解决
Gaurav Arora

82

您现在可能已经修复了此问题,但是为了确保它不会一直没有答案,请尝试将其添加到您的build.gradle

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

4
我添加了配置行,但仍然Error:Execution failed for task ':Analyst:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: duplicate entry: com/android/vending/billing/IInAppBillingService$Stub$Proxy.class显示。
biswajitGhosh,2015年

2
您如何解决此问题?
2015年

9
有没有正确的解决方案。我遇到了同样的问题java.util.zip.ZipException:重复的条目:com / google / gson / annotations / Expose.class
RamBabu Pudari

2
错误:(5,30)错误:包android.support.v4.app不存在添加答案后出现此错误
Ankit Thakkar 2015年

1
这应该去哪里,我是新手,我的当前项目中有5个build.gradle文件,它们都configurations没有,而且放在哪里似乎都没关系,我收到像不能这样的错误解析符号“排除”或无法解析符号“全部”
JStephen

25

重新导入旧的Eclipse项目时,我也遇到了此类问题。它在项目中作为jar文件出现了一些旧的依赖关系。

只是删除

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

在gradle文件中

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

这个对我有用 ..


导入旧的Eclipse项目时,发生此错误很抱歉,实际上,我删除了一些参考库,并在gradle文件中添加了相同的依赖项。
Paraneetharan Saravanaperumal

1
为我工作(也从旧的eclipse配置导入)。之后,需要清洁和重建。
Paco Abato

17
我为什么要信任一个叫索伦的人?
matthias_b_nz

停止了此特定错误,但导致了许多其他错误。有时您需要那些依赖项。听起来很奇怪,索伦这次是对的。
SMBiggs

1
通过显式地逐一添加依赖项,您可能会发现.jar其中包含两次的重复库。从不使用compile fileTree(...),它隐藏了太多明显的错误。
约书亚·品特

13

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

为了完全解决错误,首先请查看使用超过64K方法配置应用程序(尤其是“使用Gradle为Multidex配置应用程序”)。

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

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

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


9

我的理解是,存在对相同API的重复引用(可能是不同的版本号)。从命令行构建时,应该相当容易调试。

./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服务jar(是的,是的,我知道。)文件,而我的BaseApp构建文件则使用了位置服务:

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

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


1
那如果我需要冒犯性的图书馆怎么办?
Janusz 2015年

1
这帮助我找到了问题图书馆:)
speedynomads 2015年

1
这无济于事..在删除有问题的库时,模块无法编译
Utsav Gupta

9

检查您的依赖项版本,您必须具有专门针对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,如果您使用其他版本,则编译将引发该异常。


谢谢,Man,工作非常完美,我有三种不同的Google Play服务编译'com.google.android.gms:play-services-analytics:8.4.0'编译'com.google.android.gms:play-services-ads:8.3 0.0'编译'com.google.android.gms:播放服务加:8.4.0'
Samadhan Medge

5

从依赖项gardle.project中以v7轻松删除Jar文件并运行您的项目


这对我来说很有效,只需在我的“ build.gradle(模块:应用程序)”中从“依赖项”中删除“编译文件('libs / android-support-v13.jar')”形式。作为参考,在将项目表单Eclipse导入到Android Studio之后,请获取此错误。
rafaellorey '16


3

找出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'
}

在我的情况下,库'espresso'具有一个名为support-v4的jar,在我的项目'app'中具有相同的support-v4,在导入espresso时不包括support-v4。

PS:看来compile project不能用了exclude


1

这是因为您添加了一个库,并多次赋予了它对模块的依赖性。

就我而言,我添加了一个库作为模块和gradle依赖项。

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


或者,通过从libs目录中删除jar并保留gradle依赖关系,为我解决了此问题。
droideckar's

是的 删除任何单一来源都可以解决此问题。保持gradle依赖是好的。
拉胡尔·拉斯托吉

0

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

这是我所做的:

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


问题不是关于Gson的
OneCricketeer

0

我遇到了这个问题,因为我已手动将jar复制到jar中,并在gradle文件中提到了依赖项。您还要检查项目结构,是否将同一个jar文件复制到任何其他文件夹(如libs)或项目文件夹中。


0

升级android SDK后,我遇到了同样的问题。我可以在中运行该应用程序,buildToolsVersion '23.0.1'当我更改为时,出现了相同的错误buildToolsVersion '24.0.3'

我通过将Java版本从1.7更新到1.8解决了问题 compileSdkVersion 24


0

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

allprojects {
    repositories {
        jcenter()

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

1
Firebase UI版本取决于您实际编译的Firebase版本
OneCricketeer

0

我也有这个问题,因为我已经编译了“ com.android.support:appcompat-v7:24.0.0-alpha1”,但是我添加了recyclerview的免费编译文件“ com.android.support:recyclerview-v7:24.0.2”。我将版本更改为与compat一样((24.0.0 intead为24.0.0)。

我得到了答案..也许会对某人有所帮助。


0

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

和我得到的确切错误如下:

Error:Execution failed for task 
':android:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: 
java.util.zip.ZipException: duplicate entry: 
com/google/android/gms/internal/zzqx.class

因此,我首先要在Android Studio中使用ctrl + n搜索导致“重复输入”错误的类,并搜索com / google / android / gms / internal / zzqx.class,然后显示具有一个版本的gms类的2个条目8.4.0和1. 11.6.0版。

为了解决这个问题,我使两者都使用11.6.0,这是固定的示例

较早

    compile "com.google.android.gms:play-services-games:11.6.0"
    compile "com.google.android.gms:play-services-auth:8.4.0"
    compile "com.google.android.gms:play-services-ads:11.6.0"

    compile "com.google.android.gms:play-services-games:11.6.0"
    compile "com.google.android.gms:play-services-auth:11.6.0"
    compile "com.google.android.gms:play-services-ads:11.6.0"

重建固定。


0

在我的情况下,确切的错误如下

':android:transformClassesWithJarMergingForDebug'。

com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复项:com / google / android / gms / internal / zzqx.class

我正在使用另一版本的Google API,即在一个模块Gradle文件中

if (!project.hasProperty('gms_library_version')) {
        ext.gms_library_version = '8.6.0'
   }

但是在以下其他模块版本11.6.0中

   compile "com.google.android.gms:play-services-ads:11.6.0"
    compile "com.google.android.gms:play-services-games:11.6.0"
    compile "com.google.android.gms:play-services-auth:11.6.0"

但是要找到这个,我在android studio中做了一个ctrl + n并输入了类名zzqx.class,然后它显示了要提取的2个jar文件,用于此类,然后我知道我正在使用8.6.0版本。在将8.6.0更改为11.6.0并重建项目后,此问题已得到解决。

希望这可以帮助 。

此处的更多信息 https://www.versionpb.com/tutorials/step-step-tutorials-libgdx-basic-setup-libgdx/implementing-google-play-services-leaderboards-in-libgdx/


0

对我来说,不小心添加了类似的东西

apply plugin: 'kotlin-android'

到我的android库模块。删除该行可解决此问题。


0

我尝试了上述所有解决方案,但对我不起作用。我尝试通过转到项目结构>应用程序更新库。它对我有用!希望这个答案对某人有用。


-1

试试这个:

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

这个问题是关于支持v4库的,而不是关于PhotoView的
OneCricketeer

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.