java - 在这种情况下如何解决 java.util.zip.ZipException?

标签 java android gradle libraries

我试图生成一个签名的.APK,但是我遇到了一个问题。我已经看到了有关此错误的多个类似问题。我认为这是此错误的具体情况:

Error:Execution failed for task ':app:transformClassesWithJarMergingForProdRelease'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/google/android/gms/common/api/zzd.class

这是我的 build.gradle:

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

repositories {
    jcenter()
    mavenCentral()
    maven { url 'https://maven.fabric.io/public' }
    maven { url "http://pyze.bintray.com/pyze-android" }
    maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
    maven { url 'https://jitpack.io' }
}

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "myapp"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
        multiDexEnabled = true
    }

    dexOptions {
        javaMaxHeapSize "4g"
    }

    lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile ('com.android.support:design:25.3.1')

    compile('com.jakewharton:butterknife:8.5.1')
    compile('com.squareup.okhttp3:logging-interceptor:3.3.0')
    compile('com.squareup.retrofit2:retrofit:2.1.0')
    compile('com.squareup.retrofit2:converter-gson:2.1.0')
    compile('com.squareup.okhttp:okhttp:2.2.0')
    compile('com.squareup.okhttp:okhttp-urlconnection:2.2.0')
    compile('com.squareup.picasso:picasso:2.4.0')
    compile('net.danlew:android.joda:2.9.4.2')
    compile('com.michaelpardo:activeandroid:3.1.0-SNAPSHOT')
    compile('com.github.jkwiecien:EasyImage:2.0.2')
    compile('com.journeyapps:zxing-android-embedded:3.5.0')
    compile('com.pyze:PyzeLibrary:2.12.0')

    compile 'io.intercom.android:intercom-sdk-base:3.2.0'
    compile 'io.intercom.android:intercom-sdk-fcm:3.2.0'
    compile('com.facebook.android:facebook-android-sdk:4.22.0')
    compile('com.digits.sdk.android:digits:2.0.6@aar') {
        transitive = true;
    }
    compile('com.twitter.sdk.android:twitter:2.3.2@aar') {
        transitive = true;
    }
    compile('com.crashlytics.sdk.android:crashlytics:2.6.7@aar') {
        transitive = true;
    }
    compile('com.twitter.sdk.android:tweet-composer:2.3.1@aar') {
        transitive = true;
    }

    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testCompile 'junit:junit:4.12'
    annotationProcessor('com.jakewharton:butterknife-compiler:8.5.1')
}

apply plugin: 'com.google.gms.google-services'

我试图使用这段代码来分析问题来找出问题所在:

./gradlew clean app:dependencies

结果是:

compile - Classpath for compiling the main sources.
+--- com.android.support:multidex:1.0.1
+--- com.android.support:appcompat-v7:25.3.1
|    +--- com.android.support:support-annotations:25.3.1
|    +--- com.android.support:support-v4:25.3.1
|    |    +--- com.android.support:support-compat:25.3.1
|    |    |    \--- com.android.support:support-annotations:25.3.1
|    |    +--- com.android.support:support-media-compat:25.3.1
|    |    |    +--- com.android.support:support-annotations:25.3.1
|    |    |    \--- com.android.support:support-compat:25.3.1 (*)
|    |    +--- com.android.support:support-core-utils:25.3.1
|    |    |    +--- com.android.support:support-annotations:25.3.1
|    |    |    \--- com.android.support:support-compat:25.3.1 (*)
|    |    +--- com.android.support:support-core-ui:25.3.1
|    |    |    +--- com.android.support:support-annotations:25.3.1
|    |    |    \--- com.android.support:support-compat:25.3.1 (*)
|    |    \--- com.android.support:support-fragment:25.3.1
|    |         +--- com.android.support:support-compat:25.3.1 (*)
|    |         +--- com.android.support:support-media-compat:25.3.1 (*)
|    |         +--- com.android.support:support-core-ui:25.3.1 (*)
|    |         \--- com.android.support:support-core-utils:25.3.1 (*)
|    +--- com.android.support:support-vector-drawable:25.3.1
|    |    +--- com.android.support:support-annotations:25.3.1
|    |    \--- com.android.support:support-compat:25.3.1 (*)
|    \--- com.android.support:animated-vector-drawable:25.3.1
|         \--- com.android.support:support-vector-drawable:25.3.1 (*)
+--- com.android.support:design:25.3.1
|    +--- com.android.support:support-v4:25.3.1 (*)
|    +--- com.android.support:appcompat-v7:25.3.1 (*)
|    +--- com.android.support:recyclerview-v7:25.3.1
|    |    +--- com.android.support:support-annotations:25.3.1
|    |    +--- com.android.support:support-compat:25.3.1 (*)
|    |    \--- com.android.support:support-core-ui:25.3.1 (*)
|    \--- com.android.support:transition:25.3.1
|         +--- com.android.support:support-annotations:25.3.1
|         \--- com.android.support:support-v4:25.3.1 (*)
+--- com.jakewharton:butterknife:8.5.1
|    +--- com.jakewharton:butterknife-annotations:8.5.1
|    |    \--- com.android.support:support-annotations:25.1.0 -> 25.3.1
|    +--- com.android.support:support-annotations:25.1.0 -> 25.3.1
|    \--- com.android.support:support-compat:25.1.0 -> 25.3.1 (*)
+--- com.squareup.okhttp3:logging-interceptor:3.3.0
|    \--- com.squareup.okhttp3:okhttp:3.3.0
|         \--- com.squareup.okio:okio:1.8.0
+--- com.squareup.retrofit2:retrofit:2.1.0
|    \--- com.squareup.okhttp3:okhttp:3.3.0 (*)
+--- com.squareup.retrofit2:converter-gson:2.1.0
|    +--- com.squareup.retrofit2:retrofit:2.1.0 (*)
|    \--- com.google.code.gson:gson:2.7
+--- com.squareup.okhttp:okhttp:2.2.0
|    \--- com.squareup.okio:okio:1.2.0 -> 1.8.0
+--- com.squareup.okhttp:okhttp-urlconnection:2.2.0
|    \--- com.squareup.okhttp:okhttp:2.2.0 (*)
+--- com.squareup.picasso:picasso:2.4.0 -> 2.5.2
+--- net.danlew:android.joda:2.9.4.2
|    \--- joda-time:joda-time:2.9.4
+--- com.michaelpardo:activeandroid:3.1.0-SNAPSHOT
+--- com.github.jkwiecien:EasyImage:2.0.2
|    +--- com.android.support:appcompat-v7:25.0.0 -> 25.3.1 (*)
|    \--- com.jakewharton.timber:timber:4.4.0
+--- com.journeyapps:zxing-android-embedded:3.5.0
|    +--- com.google.zxing:core:3.3.0
|    \--- com.android.support:support-v4:25.1.0 -> 25.3.1 (*)
+--- com.pyze:PyzeLibrary:2.12.0
|    +--- com.android.support:appcompat-v7:23.1.1 -> 25.3.1 (*)
|    +--- com.google.android.gms:play-services-gcm:9.6.1
|    |    +--- com.google.android.gms:play-services-base:9.6.1
|    |    |    +--- com.google.android.gms:play-services-basement:9.6.1 -> 10.2.1
|    |    |    |    \--- com.android.support:support-v4:24.0.0 -> 25.3.1 (*)
|    |    |    \--- com.google.android.gms:play-services-tasks:9.6.1 -> 10.2.1
|    |    |         \--- com.google.android.gms:play-services-basement:10.2.1 (*)
|    |    +--- com.google.android.gms:play-services-basement:9.6.1 -> 10.2.1 (*)
|    |    \--- com.google.android.gms:play-services-iid:9.6.1
|    |         +--- com.google.android.gms:play-services-base:9.6.1 (*)
|    |         \--- com.google.android.gms:play-services-basement:9.6.1 -> 10.2.1 (*)
|    +--- com.google.android.gms:play-services-ads:9.6.1
|    |    +--- com.google.android.gms:play-services-ads-lite:9.6.1
|    |    |    \--- com.google.android.gms:play-services-basement:9.6.1 -> 10.2.1 (*)
|    |    +--- com.google.android.gms:play-services-base:9.6.1 (*)
|    |    +--- com.google.android.gms:play-services-clearcut:9.6.1
|    |    |    +--- com.google.android.gms:play-services-base:9.6.1 (*)
|    |    |    \--- com.google.android.gms:play-services-basement:9.6.1 -> 10.2.1 (*)
|    |    +--- com.google.android.gms:play-services-basement:9.6.1 -> 10.2.1 (*)
|    |    \--- com.google.android.gms:play-services-gass:9.6.1
|    |         \--- com.google.android.gms:play-services-basement:9.6.1 -> 10.2.1 (*)
|    +--- com.google.firebase:firebase-messaging:9.6.1 -> 10.2.1
|    |    +--- com.google.android.gms:play-services-basement:10.2.1 (*)
|    |    +--- com.google.firebase:firebase-iid:10.2.1
|    |    |    +--- com.google.android.gms:play-services-basement:10.2.1 (*)
|    |    |    \--- com.google.firebase:firebase-common:10.2.1
|    |    |         +--- com.google.android.gms:play-services-basement:10.2.1 (*)
|    |    |         \--- com.google.android.gms:play-services-tasks:10.2.1 (*)
|    |    \--- com.google.firebase:firebase-common:10.2.1 (*)
|    \--- com.android.support:support-v4:23.1.1 -> 25.3.1 (*)
+--- io.intercom.android:intercom-sdk-base:3.2.0
|    +--- com.android.support:design:25.3.1 (*)
|    +--- com.android.support:appcompat-v7:25.3.1 (*)
|    +--- com.android.support:animated-vector-drawable:25.3.1 (*)
|    +--- com.android.support:support-vector-drawable:25.3.1 (*)
|    +--- com.android.support:support-v4:25.3.1 (*)
|    +--- com.android.support:support-annotations:25.3.1
|    +--- com.android.support:recyclerview-v7:25.3.1 (*)
|    +--- com.intercom:android-composer:1.0.2
|    \--- com.intercom:android-composer-gallery:1.0.2
|         \--- com.android.support:appcompat-v7:25.1.1 -> 25.3.1 (*)
+--- io.intercom.android:intercom-sdk-fcm:3.2.0
|    +--- io.intercom.android:intercom-sdk-base:3.2.0 (*)
|    \--- com.google.firebase:firebase-messaging:10.2.1 (*)
+--- com.facebook.android:facebook-android-sdk:4.22.0
|    +--- com.android.support:support-v4:25.0.0 -> 25.3.1 (*)
|    +--- com.android.support:appcompat-v7:25.0.0 -> 25.3.1 (*)
|    +--- com.android.support:cardview-v7:25.0.0
|    |    \--- com.android.support:support-annotations:25.0.0 -> 25.3.1
|    +--- com.android.support:customtabs:25.0.0
|    |    +--- com.android.support:support-compat:25.0.0 -> 25.3.1 (*)
|    |    \--- com.android.support:support-annotations:25.0.0 -> 25.3.1
|    \--- com.parse.bolts:bolts-android:1.4.0
|         +--- com.parse.bolts:bolts-tasks:1.4.0
|         \--- com.parse.bolts:bolts-applinks:1.4.0
|              \--- com.parse.bolts:bolts-tasks:1.4.0
+--- com.digits.sdk.android:digits:2.0.6
|    +--- com.squareup.retrofit2:retrofit-mock:2.0.2
|    |    \--- com.squareup.retrofit2:retrofit:2.0.2 -> 2.1.0 (*)
|    +--- com.twitter.sdk.android:twitter-core:2.3.0 -> 2.3.1
|    |    +--- com.google.code.gson:gson:2.6.1 -> 2.7
|    |    +--- com.squareup.retrofit2:converter-gson:2.0.2 -> 2.1.0 (*)
|    |    +--- com.squareup.okhttp3:okhttp:3.2.0 -> 3.3.0 (*)
|    |    +--- io.fabric.sdk.android:fabric:1.3.+ -> 1.3.16
|    |    \--- com.squareup.retrofit2:retrofit:2.0.2 -> 2.1.0 (*)
|    +--- io.fabric.sdk.android:fabric:1.3.16
|    \--- com.crashlytics.sdk.android:answers-shim:0.0.4
+--- com.twitter.sdk.android:twitter:2.3.2
|    +--- com.twitter.sdk.android:tweet-composer:2.3.1
|    |    +--- com.twitter:twitter-text:1.13.0
|    |    +--- io.fabric.sdk.android:fabric:1.3.14 -> 1.3.16
|    |    +--- com.twitter.sdk.android:twitter-core:2.3.0 -> 2.3.1 (*)
|    |    \--- com.squareup.picasso:picasso:2.5.2
|    +--- com.twitter.sdk.android:twitter-core:2.3.1 (*)
|    \--- com.twitter.sdk.android:tweet-ui:2.3.2
|         +--- com.android.support:support-v4:23.1.1 -> 25.3.1 (*)
|         +--- com.twitter.sdk.android:twitter-core:2.3.1 (*)
|         \--- com.squareup.picasso:picasso:2.5.2
+--- com.crashlytics.sdk.android:crashlytics:2.6.7
|    +--- com.crashlytics.sdk.android:beta:1.2.4
|    |    \--- io.fabric.sdk.android:fabric:1.3.16
|    +--- io.fabric.sdk.android:fabric:1.3.16
|    +--- com.crashlytics.sdk.android:answers:1.3.12
|    |    \--- io.fabric.sdk.android:fabric:1.3.16
|    \--- com.crashlytics.sdk.android:crashlytics-core:2.3.16
|         +--- io.fabric.sdk.android:fabric:1.3.16
|         \--- com.crashlytics.sdk.android:answers:1.3.12 (*)
+--- com.twitter.sdk.android:tweet-composer:2.3.1 (*)
\--- com.google.firebase:firebase-core:9.0.0
     \--- com.google.firebase:firebase-analytics:9.0.0
          +--- com.google.android.gms:play-services-basement:9.0.0 -> 10.2.1 (*)
          +--- com.google.firebase:firebase-common:9.0.0 -> 10.2.1 (*)
          \--- com.google.firebase:firebase-analytics-impl:9.0.0
               +--- com.google.android.gms:play-services-base:9.0.0 -> 9.6.1 (*)
               +--- com.google.android.gms:play-services-basement:9.0.0 -> 10.2.1 (*)
               +--- com.google.firebase:firebase-iid:9.0.0 -> 10.2.1 (*)
               \--- com.google.firebase:firebase-common:9.0.0 -> 10.2.1 (*)

另一个可能干扰此问题的细节,我的 IDE 显示此消息:

All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 25.3.1, 25.0.0. Examples include com.android.support:animated-vector-drawable:25.3.1 and com.android.support:cardview-v7:25.0.0

我相信其中一些库在 GMS 版本方面相互冲突,但不幸的是我无法弄清楚哪些库以及如何解决问题。

提前谢谢

最佳答案

问题是您有多个依赖项使用不同版本的支持库,并且这些依赖项都与您为项目明确声明的版本不同。您需要将所有这些标准化为一个版本。理想情况下,您希望使用最新版本的支持库。

第一步是确保您使用的是所有依赖项的最新版本。如果幸运的话,这可能会立即解决问题。

如果您仍然遇到类似的错误,则需要覆盖支持库版本。您可以通过两种方式执行此操作:

  1. 从使用支持库的每个依赖项中手动排除传递依赖项。您应该有选择地进行此操作,而不是整体销售。例如

    compile 'com.jakewharton:butterknife:8.5.1', {
       exclude group: 'com.android.support'
    }
    
  2. 覆盖支持库版本,如 this answer 中所述。 .

如果您需要进一步的帮助,您应该在 google 上搜索“所有 com.android.support 库必须使用完全相同的版本规范”的错误消息。这将为您提供比“java.util.zip.ZipException:重复条目:”更好的结果。

关于java - 在这种情况下如何解决 java.util.zip.ZipException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43621687/

相关文章:

java - 带计时器的可执行 jar

java - 类 'Anonymous class derived from AdListener' 必须声明为抽象类或实现抽象方法 'onLoggingImpressionMethod(Ad)'

jsf - IceFaces CSS XP/Royale不可见(尝试打开CSS地址后出现错误404)

java - 未找到 persistence.xml - 使用 NoSql 数据库的 Gradle-Spring-MVC 项目

gradle - 如何在不修改 settings.gradle 的情况下添加 gradle 项目依赖项

java - 配置 Jackson 而不是使用 DateTimeFormat.ISO.DATE - 不工作

java - 在 Java 中以可变精度(不四舍五入)打印 double

java - arrayList<MyClass> 不保存值

android - NFC:S-beam 和 Android beam 有什么区别?

Android 停止 Runnable onBackPressed()