【问题标题】:How do I fix this "Duplicate class error" in Android Studio如何在 Android Studio 中修复此“重复类错误”
【发布时间】:2021-11-17 02:16:45
【问题描述】:

当我尝试构建我的 android 应用程序时如何解决这个问题。我将实现 'com.google.android.gms:play-services-ads:19.8.0' 更新为实现 'com.google.android.gms:play-services-ads:20.4.0' ,现在我收到此错误。

在模块 jetified-play-services-measurement-18.0.2-runtime (com.google.android.gms:play -services-measurement:18.0.2) 和 jetified-play-services-measurement-sdk-api-18.0.3-runtime (com.google.android.gms:play-services-measurement-sdk-api:18.0.3) 在模块 jetified-play-services-measurement-impl-18.0.2-runtime (com.google.android.gms:play-services-measurement-impl: 18.0.2) 和 jetified-play-services-measurement-sdk-api-18.0.3-runtime (com.google.android.gms:play-services-measurement-sdk-api:18.0.3) 在模块 jetified-play-services-measurement-base-18.0.3-runtime (com.google.android.gms:play-services-measurement-base: 18.0.3) 和 jetified-play-services-measurement-impl-18.0.2-runtime (com.google.android.gms:play-services-measurement-impl:18.0.2) 在模块 jetified-play-services-measurement-base-18.0.3-runtime (com.google.android.gms:play-services-measurement-base: 18.0.3) 和 jetified-play-services-measurement-impl-18.0.2-runtime (com.google.android.gms:play-services-measurement-impl:18.0.2) 在模块 jetified-play-services-measurement-base-18.0.3-runtime (com.google.android.gms:play-services-measurement-base: 18.0.3) 和 jetified-play-services-measurement-impl-18.0.2-runtime (com.google.android.gms:play-services-measurement-impl:18.0.2) 在模块 jetified-play-services-measurement-base-18.0.3-runtime (com.google.android.gms:play-services-measurement-base: 18.0.3) 和 jetified-play-services-measurement-impl-18.0.2-runtime (com.google.android.gms:play-services-measurement-impl:18.0.2) 在模块 jetified-play-services-measurement-base-18.0.3-runtime (com.google.android.gms:play-services-measurement-base: 18.0.3) 和 jetified-play-services-measurement-impl-18.0.2-runtime (com.google.android.gms:play-services-measurement-impl:18.0.2) 在模块 jetified-play-services-measurement-18.0.2-runtime (com.google.android.gms:play-services-measurement:18.0.2) 中发现重复的类 com.google.android.gms.measurement.internal.zzhs和 jetified-play-services-measurement-base-18.0.3-runtime (com.google.android.gms:play-services-measurement-base:18.0.3) 在模块 jetified-play-services-measurement-base-18.0.3-runtime (com.google.android.gms:play-services-measurement-base: 18.0.3) 和 jetified-play-services-measurement-impl-18.0.2-runtime (com.google.android.gms:play-services-measurement-impl:18.0.2)

【问题讨论】:

  • 显示 build.gradle 文件
  • 这里有同样的问题。
  • 同样的问题,禁用 jetified 不起作用。我想谷歌的某个人已经生气了。
  • 你在 build.gradle 中有 firebase-core 吗?尝试将其设置为 19.0.2

标签: java android android-studio


【解决方案1】:

解决此问题并为以后准备项目的最佳方法是完全迁移到 AndroidX。首先检查您的项目是否准备就绪,Refactor > Migrate to AndroidX。一旦您的项目独立于 jcenter 或任何其他较旧的库/repo 并与 AndroidX 兼容,您将不再需要 Jetifier,因此请将其注释掉或将其删除。这应该可以解决问题。

...
#android.enableJetifier=false
...

在我的情况下,这还不足以解决问题,如果您仍然收到相同的错误但来自不同的库,这可能是因为其他现有的依赖项,避免使用捆绑库或通配符 (其中系统留待猜测)确保您全部更新它们并干净地重建项目。

如果您仍然需要保留一些冲突的库,请尝试排除单个类以避免来自build.gradle 的此类错误:

android {
    ...
    defaultConfig {
        ...
    }
    buildTypes {
        ...
    }
    configurations {
        all { // You should exclude one of them not both of them 
            exclude group: "com.android.support", module: "support-core-ui"
            exclude group: "com.android.support", module: "support-compat"
        }
    }
}

关于模块排除的官方文档 - Excluding transitive dependencies

在想出解决方案之前,我还尝试了一些其他方法,例如从本地计算机中删除 .gradle,以防一些旧库被缓存并导致错误,或者重置 Android Studio,它只是不起作用。

Repo 我测试了解决方案here,正如你在这一行中看到的那样,我必须注释掉 bundle 模块并指定各个依赖项的最新更新。

您可以read more关于模块依赖错误以供参考。

【讨论】:

  • 你有什么解决办法吗?因为我也面临同样的问题
  • @AmirDoreh 上面的解决方案只对我有用,试一试。否则,您必须手动移动项目文件并添加依赖项,并在具有相同配置但新构建的新应用程序中构建。
  • @AmirDoreh 检查我的解决方案。它适用于各种情况。
【解决方案2】:

我遇到了同样的问题,我通过像这样降级 play-services-ads 依赖项来修复它。所以你可以试试。

def ads_version = "20.3.0"
implementation "com.google.android.gms:play-services-ads:$ads_version"

【讨论】:

  • 为我工作,在“20.3.0”之上没有任何工作,因此给 +1
  • 是的,它与播放服务依赖项冲突。也许他们在这个依赖项中添加了播放服务配置,这就是我认为它显示重复错误的原因
【解决方案3】:

我今天遇到了同样的问题,经过多次尝试和错误,我终于发现它是由firebase依赖引起的。如果您在项目中使用 firebase,请确保在 app/build.gradle 中使用 latest BoM version

dependencies{
   // implementation platform('com.google.firebase:firebase-bom:25.12.0')  <-- Produces errors
  implementation platform('com.google.firebase:firebase-bom:29.0.0')  //<-- This works
}

如果您使用 firebase 并且仍然出现此错误,您可以尝试直接在 app/build.gradle 中排除有问题的类:

android {
   defaultConfig {
    ...
   }
   buildTypes {
    ...
   }

   configurations {
     all {
       exclude group: "com.google.android.gms", module: "play-services-measurement-impl"
       exclude group: "com.google.android.gms", module: "play-services-measurement"
     }
   }
}

【讨论】:

  • 为我工作,谢谢!
【解决方案4】:

由于 firebase 和 google 服务依赖之间的冲突而产生错误。所以你有两个选择。

您可以更改版本并继续这样做,直到找到耗时的完美工作组合,或者您可以找到一个每次都有效的解决方案,这样您就不必每次都使用这些版本。只要出现此类错误,您只需使用该解决方案即可。

这里需要使用官方文档中更新的注入firebase依赖的方法。

将此行放入您的依赖项中:

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

然后,您可以在不指定版本的情况下使用任何 firebase 依赖项,它会一直完美运行!

最终的代码是这样的,

implementation platform('com.google.firebase:firebase-bom:28.1.0')
implementation 'com.google.firebase:firebase-analytics'
implementation 'com.google.firebase:firebase-config'
implementation 'com.google.firebase:firebase-crashlytics'

并且它不会产生任何与 play-services 依赖项相关的重复错误。

【讨论】:

    猜你喜欢
    • 2020-12-14
    • 1970-01-01
    • 2019-11-17
    • 2022-06-11
    • 2019-10-23
    • 2016-07-04
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多