Duplicate class com.google.common found in modules 迁移到 Androidx 后番石榴错误

Duplicate class com.google.common found in modules guava error after migrating to Androidx

这是我的 build.gradle 文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.app"
        multiDexEnabled true
        minSdkVersion 26
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/INDEX.LIST'
    }
}

configurations {
    all*.exclude group: 'com.google.guava', module: 'listenablefuture'
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.squareup.picasso:picasso:2.71828'
    implementation 'com.facebook.shimmer:shimmer:0.2.0'
    implementation 'androidx.multidex:multidex:2.0.0'
    testImplementation 'junit:junit:4.12'
    implementation 'com.victor:lib:1.0.4'
    implementation 'com.readystatesoftware.sqliteasset:sqliteassethelper:2.0.1'
    implementation 'net.gotev:speech:1.3.1'
    implementation files('libs/YouTubeAndroidPlayerApi.jar')
    implementation 'com.facebook.fresco:fresco:1.3.0'
    implementation 'com.haozhang.libary:android-animated-recording-view:1.0'
    implementation 'com.github.arimorty:floatingsearchview:2.1.1'
    implementation 'com.google.apis:google-api-services-youtube:v3-rev204-1.23.0'
    implementation 'com.shawnlin:number-picker:2.4.6'
    implementation 'com.unstoppable:submitbutton:1.1.3'
    implementation 'ru.github.igla:ferriswheel:1.1.1'
    implementation 'com.github.Yalantis:Context-Menu.Android:1.0.8'
   // implementation 'com.android.support:cardview-v7:23.+'
    implementation 'com.jaredrummler:material-spinner:1.2.5'
    implementation 'com.github.clans:fab:1.6.4'
    implementation 'com.chauthai.swipereveallayout:swipe-reveal-layout:1.4.1'
    implementation 'com.mapzen.android:speakerbox:1.4.1'
    implementation 'com.github.adrielcafe:AndroidAudioConverter:0.0.8'


    implementation 'com.google.android.material:material:1.0.0'
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.core:core:1.1.0'

    implementation group: 'com.google.cloud', name: 'google-cloud-speech', version: '1.22.0'

}

我在尝试构建项目时遇到此错误:

Duplicate class com.google.common.annotations.Beta found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.annotations.GwtCompatible found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.annotations.GwtIncompatible found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.annotations.VisibleForTesting found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.Absent found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.AbstractIterator found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.AbstractIterator found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.AbstractIterator$State found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.Ascii found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.CaseFormat found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.CaseFormat found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.CaseFormat found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.CaseFormat found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.CaseFormat found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.CaseFormat found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.CaseFormat$StringConverter found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.CharMatcher found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.CharMatcher found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.CharMatcher$And found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.CharMatcher$BitSetMatcher found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.CharMatcher$FastMatcher found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.CharMatcher$NegatedFastMatcher found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.CharMatcher$Or found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.CharMatcher$RangesMatcher found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.Charsets found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.Converter found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.Converter found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.Converter found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.Converter$ConverterComposition found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.Converter$FunctionBasedConverter found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)
Duplicate class com.google.common.base.Converter$IdentityConverter found in modules guava-28.1-android.jar (com.google.guava:guava:28.1-android) and guava-jdk5-17.0.jar (com.google.guava:guava-jdk5:17.0)

如何解决这个问题?

从表面上看,您是否同时需要 com.google.guava:guava-jdk5:17.0 和 com.google.guava:guava:28.1-android 依赖项?

我经常看到重复的 class 错误出现在两种情况下:
1) 两个库使用相同依赖的不同版本。

2) 在项目中一起使用 androidx 和支持库。您的两个 guava 依赖项可能正在使用 google commons classes,它们存在于 androidx 和支持库中。

您应该验证所有支持库依赖项是否已替换为 androidx,如果已完成,请考虑从 com.google.guava:guava-jdk5 中排除冲突的 classes 包:17.0 或 com.google.guava:guava:28.1-android.

经过数小时的研究,我找到了解决方案。有问题的依赖是这样的:

'com.google.apis:google-api-services-youtube:v3-rev204-1.23.0'

我通过使用解决了它:

implementation ('com.google.apis:google-api-services-youtube:v3-rev204-1.23.0'){
        exclude group:'com.google.guava'
    }

如果您遇到类似的问题,请尝试创建一个新的 Android 项目并仅导入您之前项目的依赖项。然后分而治之,直到找到有问题的依赖项。

我遇到了同样的错误

“在模块 jetified-guava-27.1-android (com.google.guava:guava:27.1-android) 和 jetified 中发现重复 class com.google.common.annotations.Beta -guava-jdk5-17.0 (com.google.guava:guava-jdk5:17.0)"

我使用 YouTube 数据 api v3 在我的应用程序中实现了 Youtube,同时将此应用程序作为模块添加到我的主应用程序中时,我遇到了同样的错误。

我通过删除一些依赖项解决了这个错误

implementation('com.google.api-client:google-api-client-android:1.23.0') {
    exclude group: 'org.apache.httpcomponents'
}

implementation('com.google.apis:google-api-services-youtube:v3-rev183-1.22.0') {
    exclude group: 'org.apache.httpcomponents'
}

implementation('com.google.api-client:google-api-client-android:1.23.0') {
    exclude group: 'org.apache.httpcomponents'
}

以上是我添加的所有三个库,但这是无用的并且会抛出错误,因此将这些全部删除。

可能为时已晚。但是,我正在为您的问题写一个答案。

我遇到了同样的问题。我使用的是 Youtube Data API v3。经过几次搜索并看到来自 Whosebug 的答案后,我混合了所有这些并且以某种方式起作用了!!

这是我所做的一切,并且有效。

已将配置添加到应用级别 build.gradle 文件。喜欢下面

configurations {
implementation.exclude module:'gauva-jdk5'
all*.exclude group: 'com.google.guava', module: 'listenablefuture' }

在依赖块中添加了这两行

implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava' implementation 'com.google.guava:guava:26.0-android'

在 youtbe 数据所需的依赖项中 api 我已经 排除组:'com.google.guava'

如下图

implementation ('com.google.api-client:google-api-client-android:1.22.0') {
        exclude group: 'org.apache.httpcomponents'
        exclude group:'com.google.guava'
    }
    implementation ('com.google.apis:google-api-services-youtube:v3-rev183-1.22.0') {
        exclude group: 'org.apache.httpcomponents'
        exclude group:'com.google.guava'
    }

查看更多 https://stackguides.com/questions/61480581/duplicate-class-found-in-modules-guava-26-0-android-jar-and-guava-jdk5-17-0-jar#