在模块中找到重复的类

7
我正在开发一个多模块Android项目。其中一个之前编写的模块使用了Paging库版本2,现在我正在尝试在另一个模块中使用新的Paging v3库,但是我遇到了这个错误。 Duplicate class androidx.paging.LivePagedListKt found in modules jetified-paging-runtime-ktx-2.1.2-runtime.jar (androidx.paging:paging-runtime-ktx:2.1.2) and paging-runtime-3.0.0-alpha03-runtime.jar (androidx.paging:paging-runtime:3.0.0-alpha03) 模块的层次结构如下:
       app:
   /         \
module-A    module-B
(uses v2)   (uses v3)

我已经在app模块的build.gradle文件中添加了模块A和模块B的依赖项,如下所示。
implementation project(path: ':module-A')
implementation project(path: ':module-B')

如果在同一项目中使用不同版本的同一库,只要这些不同版本用于不同的模块中,我们有什么方法可以做到呢?

目前尝试过的解决方案:

我查看了类似的答案,并在应用级别的 build.gradle 文件中添加了这行代码。

configurations {
    runtime.exclude group: 'androidx.paging', module: 'paging-runtime'
}

但是仍然遇到相同的错误。


我有同样的问题。有人知道解决方案吗? - Tom Wayne
我找不到任何解决方案,最终只能在所有模块中使用相同版本的库。 - simarjot singh kalsi
1个回答

2

这段代码:

configurations {
    runtime.exclude group: 'androidx.paging', module: 'paging-runtime'
}

只有在runtime配置中包含v2库时才能起作用。您应该调整配置, 使其符合您声明v2库的任何配置(implementation, api, 已弃用的compile等)。
您可能正在使用implementation,请尝试使用以下代码片段:
configurations {
    implementation.exclude group: 'androidx.paging', module: 'paging-runtime-ktx'
}

无论使用-ktx与否,都可以使用此代码片段:

或者使用此代码片段,它应该适用于您正在使用的任何配置:

configurations.all {
    exclude group: 'androidx.paging', module: 'paging-runtime-ktx'
}

来源: https://docs.gradle.org/current/userguide/dependency_downgrade_and_exclude.html#sec:excluding-transitive-deps

(该链接为Gradle官方文档,介绍了如何排除传递依赖)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接