添加依赖项后遇到“找到 Gradle 重复类”错误

Encountering 'Gradle Duplicate class found' error after adding dependency

提问人:Murphler 提问时间:6/16/2022 更新时间:3/29/2023 访问量:5645

问:

我正在寻求实现应用内更新,并遵循 Google 提供的指导

https://developer.android.com/guide/playcore/in-app-updates/kotlin-java#kts

因此,我正在尝试添加以下依赖项

implementation("com.google.android.play:app-update:2.0.0")
implementation("com.google.android.play:app-update-ktx:2.0.0")

但是,在尝试构建项目时,我遇到了发现重复类的错误。下面提供了一个示例,尽管其中有很多

com.google.android.play.core.appupdate.AppUpdateInfo found in modules jetified-app-update-2.0.0-runtime (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.2-runtime (com.google.android.play:core:1.10.2)

我试着工作。通过在配置中添加一些 exclude 子句来解决这个问题

configurations {
    all {
        exclude group: "com.google.android.play", module: "app-update"
        exclude group: "com.google.android.play", module: "core"
    }
}

上面的例子是最终允许程序构建的例子,但是当我去使用该库时,很明显它的许多元素都没有被正确导入。当我尝试实例化 AppUpdateManager 时,它丢失了,AppUpdateResult 似乎是唯一可以使用的。

enter image description here

非常感谢有关我在这里可能做什么以及任何修复或解决方法的一些指导

Android android-studio kotlin android-gradle-plugin

评论


答:

0赞 Martin Zeitler 6/16/2022 #1

添加依赖项两次是没有意义的,只是将其从构建中排除。
仅添加 .
implementation("com.google.android.play:app-update-ktx:2.0.0")

评论

2赞 Murphler 6/16/2022
我尝试只添加一个或另一个,没有任何排除项,但我仍然收到重复类错误。我对我的库似乎正在复制的错误消息中出现的“喷气式”是什么感到特别困惑
0赞 DevinM 10/26/2022
@Murphler jetifier 工具会迁移依赖于支持库的库,以依赖等效的 AndroidX 软件包。这可能在您的 gradle.properties “android.enableJetifier=true” 中定义。尽管如此,删除它仍然会导致同样的问题,但不会在错误:(中包含喷射器
6赞 Kamna Rai 8/15/2022 #2

使用这个

implementation 'com.google.android.play:core:1.9.0'

并删除两者

implementation("com.google.android.play:app-update:2.0.0")
implementation("com.google.android.play:app-update-ktx:2.0.0")

评论

0赞 James 8/20/2022
你是对的,他不应该同时添加和依赖项,但已被弃用,不应该再使用,因为库被分解了。如果您当前正在项目中使用,您可以按照以下文档进行迁移: developer.android.com/guide/playcore#playcore-migrationapp-updateapp-update-ktxcorecore
3赞 solamour 3/29/2023 #3

我也有类似的问题。简而言之,我正在使用并希望迁移到“多个每个功能库”(https://developer.android.com/guide/playcore#playcore-migration)。但是我一直收到“duplicate com.google.android.play:core”错误消息,即使我已经删除了它。com.google.android.play:core-ktx

事实证明,我正在使用的一个库(具体来说)包括幕后。当我更新到 时,问题消失了,我能够迁移到 Google Play Core 的按功能库。androidx.navigation:navigation-dynamic-features-fragment:2.5.0-alpha03com.google.android.play:core:1.10.2androidx.navigation:navigation-dynamic-features-fragment:2.6.0-alpha08

评论

0赞 Amin Keshavarzian 5/7/2023
你是怎么在幕后找到的?:D
2赞 solamour 5/8/2023
当您从终端运行“./gradlew :app:dependencies --configuration debugRuntimeClasspath”时,它会显示哪个包依赖于什么的图表。