【问题标题】:Android: Duplicate class found in modules jetified-play-services-measurement and jetified-play-services-measurement-implAndroid:在模块 jetified-play-services-measurement 和 jetified-play-services-measurement-impl 中发现重复类
【发布时间】:2022-11-11 14:07:45
【问题描述】:

我正在尝试更新我的一个 Android 项目的依赖项,但我收到了这个奇怪的错误。

罪魁祸首是这一行,对于 AdMob(我之前使用的是 20.6.0):

implementation "com.google.android.gms:play-services-ads:21.0.0"

我收到一堆错误:

在模块 jetified-play-services-measurement-base-20.1.2-runtime (com.google.android.gms:play-services-measurement-base: 20.1.2) 和 jetified-play-services-measurement-impl-20.1.1-runtime (com.google.android.gms:play-services-measurement-impl:20.1.1)

在模块 jetified-play-services-measurement-base-20.1.2-runtime (com.google.android.gms:play-services-measurement-base: 20.1.2) 和 jetified-play-services-measurement-impl-20.1.1-runtime (com.google.android.gms:play-services-measurement-impl:20.1.1)

在模块 jetified-play-services-measurement-base-20.1.2-runtime (com.google.android.gms:play-services-measurement-base: 20.1.2) 和 jetified-play-services-measurement-impl-20.1.1-runtime (com.google.android.gms:play-services-measurement-impl:20.1.1)

在模块 jetified-play-services-measurement-base-20.1.2-runtime (com.google.android.gms:play-services-measurement-base: 20.1.2) 和 jetified-play-services-measurement-impl-20.1.1-runtime (com.google.android.gms:play-services-measurement-impl:20.1.1)

...

以下是我在项目的build.gradle (:app) 中使用的所有依赖项:

dependencies {
    implementation "androidx.recyclerview:recyclerview:1.2.1"
    implementation 'androidx.core:core-ktx:1.8.0'
    implementation 'androidx.appcompat:appcompat:1.4.2'
    implementation 'com.google.android.material:material:1.6.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
    // Firebase & Crashlytics
    implementation platform('com.google.firebase:firebase-bom:29.2.1')
    implementation 'com.google.firebase:firebase-analytics-ktx'
    implementation 'com.google.firebase:firebase-crashlytics-ktx'
    //Navigation
    implementation "androidx.navigation:navigation-fragment-ktx:2.4.2"
    implementation "androidx.navigation:navigation-ui-ktx:2.4.2"
    // AdMob
    implementation "com.google.android.gms:play-services-ads:21.0.0"
    // Style
    implementation 'com.intuit.sdp:sdp-android:1.0.5'
    // Play Core
    implementation 'com.google.android.play:core:1.10.3'
    implementation 'com.google.android.play:core-ktx:1.8.1'
    // Billing
    implementation "com.android.billingclient:billing-ktx:5.0.0"
}

以及build.gradle (My App) 中的依赖关系:

buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:7.1.3"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.4.2"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21"
        classpath "com.google.gms:google-services:4.3.10"
        classpath "com.google.firebase:firebase-crashlytics-gradle:2.8.1"
    }
}

是什么导致了这个错误?如果我将 play-services-ads 恢复为 20.6.0,我不会收到任何错误。

谢谢您的帮助

【问题讨论】:

    标签: android gradle


    【解决方案1】:

    你还需要更新 implementation platform('com.google.firebase:firebase-bom:29.2.1'),

     implementation platform('com.google.firebase:firebase-bom:30.1.0')
    

    【讨论】:

    • 谢谢,这就是解决方案!我被这样一个事实困住了:我在 Android Studio 的这条线上没有收到任何警告。
    • 我想,你是一些开发者的英雄!
    • 干得好,兄弟! tks
    • 谢谢老哥,我一天半天了。
    【解决方案2】:

    我跑了

    ./gradlew -q app:dependencies
    

    通过搜索 play-services-measurement 发现以下 sn-ps:

    |    |    |    +--- com.google.android.gms:play-services-ads:21.2.0
    |    |    |    |    +--- androidx.browser:browser:1.4.0
    |    |    |    |    |    +--- androidx.collection:collection:1.1.0 -> 1.2.0 (*)
    |    |    |    |    |    +--- androidx.concurrent:concurrent-futures:1.0.0 (*)
    |    |    |    |    |    +--- androidx.interpolator:interpolator:1.0.0 (*)
    |    |    |    |    |    +--- androidx.core:core:1.1.0 -> 1.8.0 (*)
    |    |    |    |    |    +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
    |    |    |    |    |    --- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
    |    |    |    |    +--- androidx.collection:collection:1.0.0 -> 1.2.0 (*)
    |    |    |    |    +--- androidx.core:core:1.0.0 -> 1.8.0 (*)
    |    |    |    |    +--- com.google.android.gms:play-services-ads-base:21.2.0
    |    |    |    |    |    --- com.google.android.gms:play-services-basement:18.0.0 (*)
    |    |    |    |    +--- com.google.android.gms:play-services-ads-identifier:18.0.0 (*)
    |    |    |    |    +--- com.google.android.gms:play-services-ads-lite:21.2.0
    |    |    |    |    |    +--- androidx.work:work-runtime:2.7.0 -> 2.7.1
    |    |    |    |    |    |    +--- androidx.annotation:annotation-experimental:1.0.0 -> 1.1.0
    |    |    |    |    |    |    +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
    |    |    |    |    |    |    +--- androidx.lifecycle:lifecycle-livedata:2.1.0 -> 2.5.1 (*)
    |    |    |    |    |    |    +--- androidx.startup:startup-runtime:1.0.0 -> 1.1.1 (*)
    |    |    |    |    |    |    +--- androidx.core:core:1.6.0 -> 1.8.0 (*)
    |    |    |    |    |    |    +--- androidx.room:room-runtime:2.2.5 -> 2.4.2 (*)
    |    |    |    |    |    |    +--- androidx.sqlite:sqlite:2.1.0 -> 2.2.0 (*)
    |    |    |    |    |    |    +--- androidx.sqlite:sqlite-framework:2.1.0 -> 2.2.0 (*)
    |    |    |    |    |    |    +--- androidx.core:core:1.1.0 -> 1.8.0 (*)
    |    |    |    |    |    |    --- androidx.lifecycle:lifecycle-service:2.1.0 -> 2.4.0 (*)
    |    |    |    |    |    +--- com.google.android.gms:play-services-ads-base:21.2.0 (*)
    |    |    |    |    |    +--- com.google.android.gms:play-services-basement:18.0.0 (*)
    |    |    |    |    |    +--- com.google.android.gms:play-services-measurement-sdk-api:20.1.2 (*)
    
    
    |    +--- com.google.firebase:firebase-analytics:18.0.3
    |    |    +--- com.google.android.gms:play-services-measurement:18.0.3
    |    |    |    +--- androidx.collection:collection:1.0.0 -> 1.2.0 (*)
    |    |    |    +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
    |    |    |    +--- com.google.android.gms:play-services-ads-identifier:17.0.0 -> 18.0.0 (*)
    |    |    |    +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.0.0 (*)
    |    |    |    +--- com.google.android.gms:play-services-measurement-base:18.0.3 -> 20.1.2 (*)
    |    |    |    +--- com.google.android.gms:play-services-measurement-impl:18.0.3
    |    |    |    |    +--- androidx.collection:collection:1.0.0 -> 1.2.0 (*)
    |    |    |    |    +--- androidx.core:core:1.0.0 -> 1.8.0 (*)
    |    |    |    |    +--- com.google.android.gms:play-services-ads-identifier:17.0.0 -> 18.0.0 (*)
    |    |    |    |    +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.0.0 (*)
    |    |    |    |    +--- com.google.android.gms:play-services-measurement-base:18.0.3 -> 20.1.2 (*)
    |    |    |    |    --- com.google.android.gms:play-services-stats:17.0.0
    |    |    |    |         +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
    |    |    |    |         --- com.google.android.gms:play-services-basement:17.0.0 -> 18.0.0 (*)
    |    |    |    --- com.google.android.gms:play-services-stats:17.0.0 (*)
    |    |    +--- com.google.android.gms:play-services-measurement-api:18.0.3
    |    |    |    +--- com.google.android.gms:play-services-ads-identifier:17.0.0 -> 18.0.0 (*)
    |    |    |    +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.0.0 (*)
    |    |    |    +--- com.google.android.gms:play-services-measurement-base:18.0.3 -> 20.1.2 (*)
    |    |    |    +--- com.google.android.gms:play-services-measurement-sdk-api:18.0.3 -> 20.1.2 (*)
    |    |    |    +--- com.google.android.gms:play-services-tasks:17.0.0 -> 18.0.1 (*)
    |    |    |    +--- com.google.firebase:firebase-common:19.3.0 -> 20.0.0 (*)
    |    |    |    +--- com.google.firebase:firebase-components:16.0.0 -> 17.0.0 (*)
    |    |    |    +--- com.google.firebase:firebase-installations:16.3.2 -> 17.0.0 (*)
    |    |    |    +--- com.google.firebase:firebase-installations-interop:16.0.0 -> 17.0.0 (*)
    |    |    |    --- com.google.firebase:firebase-measurement-connector:18.0.0 (*)
    |    |    --- com.google.android.gms:play-services-measurement-sdk:18.0.3
    

    所以显然问题在于我的项目com.google.android.gms:play-services-ads:21.2.0com.google.firebase:firebase-analytics:18.0.3 的这两个直接依赖项都指定了play-services-measurement 的不同版本

    如果我们进一步查看play-services-measurement:18.0.3 的 pom 文件:

        <dependency>
          <groupId>com.google.android.gms</groupId>
          <artifactId>play-services-measurement-base</artifactId>
          <version>[18.0.3]</version>
          <scope>compile</scope>
          <type>aar</type>
        </dependency>
        <dependency>
          <groupId>com.google.android.gms</groupId>
          <artifactId>play-services-measurement-impl</artifactId>
          <version>[18.0.3]</version>
          <scope>compile</scope>
          <type>aar</type>
        </dependency>
    

    它严格要求 baseimpl 的 18.0.3,这使得 Gradle 无法自行解决问题。

    我选择将firebase analytics 升级到20.1.2,问题就解决了。

    【讨论】:

      猜你喜欢
      • 2020-09-12
      • 2021-03-21
      • 1970-01-01
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多