使用 firebase-analytics:16.0.5 时出现重复的 jar 条目

Duplicate jar entry when using firebase-analytics:16.0.5

在广告 17.1.1 中正式修复 (developers.google.com/android/guides/releases)


将 firebase-analytics 的版本从 16.0.4 更新到 16.0.5 后 该项目未能构建版本 aab/apk,错误消息为 Duplicate jar entry [com/google/android/gms/internal/measurement/zzdz.class]

Android Studio 3.2.1

应用的 build.gradle

    implementation 'com.google.firebase:firebase-core:16.0.5'
    implementation 'com.google.firebase:firebase-analytics:16.0.5'
    implementation 'com.google.firebase:firebase-ads:17.1.0'
    implementation 'com.google.firebase:firebase-perf:16.2.0'
    implementation 'com.crashlytics.sdk.android:crashlytics:2.9.6'

项目build.gradle

    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath 'com.google.gms:google-services:4.2.0' // google-services plugin
        classpath 'com.google.firebase:firebase-plugins:1.1.5'
        classpath 'io.fabric.tools:gradle:1.26.1'
    }

错误

Caused by: java.io.IOException: Can't write [MASKED\app\build\intermediates\transforms\proguard\release[=12=].jar] (Can't read [MASKED\app\build\intermediates\transforms\FirebasePerformancePlugin\release(;;;;;;;**.class)] (Can't read [com] (Can't read [google] (Can't read [android] (Can't read [gms] (Can't read [internal] (Can't read [measurement] (Can't read [zzdz.class] (Duplicate jar entry [com/google/android/gms/internal/measurement/zzdz.class])))))))))    at proguard.OutputWriter.writeOutput(OutputWriter.java:202)     at proguard.OutputWriter.execute(OutputWriter.java:89)  at proguard.ProGuard.writeOutput(ProGuard.java:515)     at proguard.ProGuard.execute(ProGuard.java:210)     at com.android.build.gradle.internal.transforms.BaseProguardAction.runProguard(BaseProguardAction.java:64)  at com.android.build.gradle.internal.transforms.ProGuardTransform.doMinification(ProGuardTransform.java:262)    at com.android.build.gradle.internal.transforms.ProGuardTransform.access[=12=]0(ProGuardTransform.java:65)     at com.android.build.gradle.internal.transforms.ProGuardTransform.run(ProGuardTransform.java:176)     at com.android.builder.tasks.Job.runTask(Job.java:47)   at com.android.build.gradle.tasks.SimpleWorkQueue$EmptyThreadContext.runTask(SimpleWorkQueue.java:41)   at com.android.builder.tasks.WorkQueue.run(WorkQueue.java:282)  ... 1 more

在他们发布修复程序之前有任何解决方法吗?

遇到此问题后,请尝试将 google 播放服务版本更新到最新版本,并更新您正在使用的所有 firebase 库。 从 Android Studio 3.2.1 开始,以下是最新的:

 dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath 'com.google.gms:google-services:4.0.2'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }

使用 gradlew :app:dependencies 并发现一些依赖项没有使用最新版本。

手动添加以下依赖覆盖加载的版本可以解决问题。

implementation 'com.google.android.gms:play-services-measurement-sdk-api:16.0.3'
implementation 'com.google.android.gms:play-services-basement:16.1.0'

这是简单的解决方案,

Google 已经修复问题,您只需将 ads gradle 版本更新到 17.1.1,这将解决 firebase-core:16.0.5 的问题,添加下面几行将解决问题

implementation 'com.google.firebase:firebase-ads:17.1.1'
implementation 'com.google.android.gms:play-services-ads:17.1.1'
implementation 'com.google.firebase:firebase-core:16.0.5'