升级Kotlin 1.8.20和Gradle 8.1.1后遇重复类错误求助
解决Kotlin 1.8.20 + Gradle 8.1.1下的重复类co.touchlab.stately.HelpersJVMKt问题
问题描述
升级Kotlin到1.8.20、Gradle到8.1.1后,执行:app:checkDebugDuplicateClasses任务失败,提示检测到重复类co.touchlab.stately.HelpersJVMKt,分别存在于co.touchlab:stately-common-jvm:2.0.0-rc1和co.touchlab:stately-strict-jvm:2.0.0-rc1两个模块中。
解决方案
1. 定位重复依赖的引入源
先找出是哪个第三方依赖同时引入了这两个冲突包:
- 在终端执行Gradle命令查看依赖树:
./gradlew app:dependencies
- 或者在Android Studio的Gradle面板中,找到
app->Tasks->android-> 运行androidDependencies,在输出结果中搜索stately,定位包含这两个模块的父依赖。
2. 排除冗余依赖
找到根源依赖后,在对应的依赖声明中添加排除规则。例如假设是cache4k引入了冲突依赖,修改如下:
implementation('io.github.reactivecircus.cache4k:cache4k:0.10.0') { // 排除其中一个重复模块,优先保留strict或common,需测试功能完整性 exclude group: 'co.touchlab', module: 'stately-strict-jvm' }
如果暂时无法定位具体依赖,也可以全局排除其中一个模块,在app/build.gradle的android块外添加:
configurations.all { exclude group: 'co.touchlab', module: 'stately-strict-jvm' }
注意:排除后务必测试应用核心功能,确保没有用到被排除模块中的类。
3. 验证修复
执行以下命令清理并构建项目,确认错误是否消失:
./gradlew clean build
补充说明
Gradle 8.x版本对依赖冲突的检测更加严格,这类重复类问题在旧版本中可能被忽略;同时Kotlin 1.8.20的依赖兼容性要求更高,建议确保所有第三方依赖都适配了当前Kotlin版本。
内容的提问来源于stack exchange,提问作者Fernando Dias
相关产品推荐
相关产品推荐

