在模块中发现重复的类

sim*_*lsi 7 android gradle android-gradle-plugin

我正在开发一个多模块 Android 项目。以前编写的模块之一使用 Paging 库 version-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)
Run Code Online (Sandbox Code Playgroud)

我在 app 模块 build.gradle 中添加了模块 A 和模块 B 的依赖项,就像这样

implementation project(path: ':module-A')
implementation project(path: ':module-B')
Run Code Online (Sandbox Code Playgroud)

有没有什么办法可以在同一个项目中使用同一个库的不同版本,前提是在不同的模块中使用不同的版本

到目前为止尝试的解决方案:

我查看了类似的答案并在应用程序级 build.gradle 文件中添加了这一行

configurations {
    runtime.exclude group: 'androidx.paging', module: 'paging-runtime'
}
Run Code Online (Sandbox Code Playgroud)

但仍然得到同样的错误。

Mit*_*ggs 2

片段:

configurations {
    runtime.exclude group: 'androidx.paging', module: 'paging-runtime'
}
Run Code Online (Sandbox Code Playgroud)

仅当 v2 库包含在runtime配置中时才有效。您应该调整配置以适应您在其中声明的 v2 库的任何配置(implementation、、api已弃用的compile、等等)。

您可能正在使用implementation,因此请尝试以下代码片段:

configurations {
    implementation.exclude group: 'androidx.paging', module: 'paging-runtime-ktx'
}
Run Code Online (Sandbox Code Playgroud)

有还是没有-ktx

或者使用以下代码片段,无论您使用的配置如何,它都应该有效:

configurations.all {
    exclude group: 'androidx.paging', module: 'paging-runtime-ktx'
}
Run Code Online (Sandbox Code Playgroud)

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