Kotlin依赖冲突引发重复类错误,求解决方案
解决Kotlin stdlib重复类依赖冲突问题
核心解决步骤
1. 强制统一Kotlin版本
在项目级build.gradle中全局指定Kotlin版本,确保所有模块和第三方依赖都使用同一版本的stdlib:
// 项目级 build.gradle buildscript { ext { kotlin_version = "1.8.10" // 统一为目标版本 } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // 其他classpath依赖保持不变 } } allprojects { configurations.all { resolutionStrategy { // 强制所有依赖使用指定版本的Kotlin stdlib系列包 force "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" force "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" } } }
同时在App级build.gradle中直接引用统一版本的stdlib:
// App级 build.gradle dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$rootProject.ext.kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$rootProject.ext.kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$rootProject.ext.kotlin_version" // 其他业务依赖保持不变 }
2. 排查并排除隐藏的旧版本依赖
执行gradle命令查看完整依赖树,定位拉取旧版本stdlib的第三方依赖:
./gradlew app:dependencies
搜索kotlin-stdlib-jdk7或kotlin-stdlib-jdk8,找到对应依赖后,在App级build.gradle中排除旧版本:
// 示例:排除某第三方依赖中的旧版本stdlib implementation 'com.example.somelibrary:1.0.0' { exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7' exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8' }
3. 调整Jetifier配置
虽然已开启Jetifier,但它可能会重复处理Kotlin stdlib包,导致冲突。在gradle.properties中添加忽略配置:
android.enableJetifier=true android.jetifier.ignorelist=kotlin-stdlib,kotlin-stdlib-jdk7,kotlin-stdlib-jdk8
4. 清理缓存并重建
执行以下操作彻底清理缓存,避免旧缓存干扰:
./gradlew clean
同时删除项目根目录下的.gradle文件夹,以及用户目录(如~/.gradle)中的缓存文件,之后重新同步项目并构建。
内容的提问来源于stack exchange,提问作者Ehsan Abid
相关产品推荐
相关产品推荐

