Zip. ZipException: packageAllDebugClassesForMultiDex 期间的重复条目

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

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

I am currently using android-support-v4.jar for my libraries

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

错误不显示在梯度同步。只是当我尝试运行应用程序

有什么问题吗?

250548 次浏览

你现在可能已经解决了这个问题但为了不让这个问题一直没有答案, 试着把这个加到你的 build.gradle:

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

简单地将 Jar 文件从相关性 gardle.project 移除为 v7 运行你的项目

我的理解是,存在对同一 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 目录中包含的 aar 文件(the OffendingAAR)包含了 Google Play Services jar (是的,包含了所有内容)。是的,我知道。)文件,而我的 BaseApp 构建文件使用位置服务:

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

您可以安全地从生成文件中删除有问题的项,清理并重新生成(如果需要,可以重复)。

检查你的依赖版本,你必须有兼容的版本特别注意 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,如果您有另一个版本的编译将抛出该异常。

发现 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。

附注: 似乎 compile project不能与 exclude一起工作

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

拿开

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

在档案里

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

对我有用。

对于 Expos.class Error 即

异常: 重复条目: com/google/gson/annotions/Expose.class

使用下面的代码

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

在我的例子中,在 build.gradle 中设置 multiDexEnable=true之后出现了上面提到的“重复输入”错误。

为了完全解决这个问题,首先看看 使用超过64K 的方法配置应用程序(特别是“用 Gradle 配置 Multidex”)。

Furthermore search for occurences of the class that causes the "duplicate entry" error using ctrl+n in Android Studio. Determine the module and dependency that contains the duplicate and exclude it from build, e.g.:

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

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

对于错误: 任务执行失败: app: formClassesWithJarMergingForDebug’com.android.build.api.transform.TransformException java.util.zip. ZipException 复制条目 com/google/gson/notations/Expose.class

Here is what I did:

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

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

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

in your app dir build.gradle file 添加以下命令:

android{




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


}

对我有用! 你可以试试!

I have faced this issue as i have manually copied the jar in libs as well as mentioned the dependency in gradle file. You also check in your project structure, whether the same jar file is copied in any other folder like libs or in project folder.

升级 android SDK 之后,我也遇到了同样的问题。我能够在 buildToolsVersion '23.0.1'中运行应用程序,当我改为 buildToolsVersion '24.0.3'时,我得到了相同的错误

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

This problem cost me one whole day. I finally downgraded the firebase-ui library version from 2.0.0 to 1.2.0 and added the following code inside Project level build.gradle file:

allprojects {
repositories {
jcenter()


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

This is because you have added a library and given its dependency on a module more than once.

在我的例子中,我添加了一个库作为一个模块和一个等级依赖项。

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

试试这个:

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

我也有这个问题,因为我已经编译了“ com.android.support: appcompat-v7:24.0.0-alpha1”,但是我添加了回收视图库编译“ com.android.support: 迴收视图-v7:24.0.2”。.我把版本改成了 compat like (24.0.2而不是24.0.0)。

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

In my case the mentioned "duplicate entry" error arised after settingmultiDexEnable=true in the build.gradle.

我得到的确切错误如下:

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

So first thing I search for class which causes "duplicate entry" error using ctrl+n in Android Studio and searched for com/google/android/gms/internal/zzqx.class and then it was showing 2 entries for gms class with one version 8.4.0 and 1 with version 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"

重建固定。

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

“ : android: formClassesWithJarMergingForDebug”。

com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/google/android/gms/internal/zzqx.class

我正在使用谷歌 API 的另一个版本,即在一个模块级文件

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 工作室里做了一个 ctrl + n,输入了类名 zzqx.class,然后它显示了2个 jar 文件,这样我就知道我在使用8.6.0版本了。在将8.6.0更改为11.6.0并重建项目时,问题得到了解决。

希望这个能帮上忙。

More on this here Https://www.versionpb.com/tutorials/step-step-tutorials-libgdx-basic-setup-libgdx/implementing-google-play-services-leaderboards-in-libgdx/

对我来说,当我不小心添加了

apply plugin: 'kotlin-android'

删除该行修复了这个问题。

我尝试了以上所有的解决方案,但不适合我。我尝试通过 goto project struct> app 来更新库。而且对我很有效!希望这个答案对某些人有所帮助。