
本文详解 android 项目中因 kotlin 标准库版本不一致(如同时引入 kotlin-stdlib 1.8.10 和 kotlin-stdlib-jdk7/8 1.7.20)引发的 duplicate class 编译错误,并提供精准、可复现的 gradle 配置修复方案。
本文详解 android 项目中因 kotlin 标准库版本不一致(如同时引入 kotlin-stdlib 1.8.10 和 kotlin-stdlib-jdk7/8 1.7.20)引发的 duplicate class 编译错误,并提供精准、可复现的 gradle 配置修复方案。
在构建基于 Firebase Auth 与 Realtime Database 的多 Activity Kotlin 应用时,你可能突然遭遇大量 Duplicate class kotlin.xxx 编译错误——这并非代码逻辑问题,而是典型的 Kotlin 标准库依赖冲突:不同第三方库(尤其是 Firebase BOM、Compose BOM 或旧版 SDK)各自传递性地引入了不同版本的 kotlin-stdlib 及其 JDK 扩展模块(如 kotlin-stdlib-jdk7、kotlin-stdlib-jdk8),而这些模块在 Kotlin 1.7+ 后已逐步被合并进主 kotlin-stdlib,导致类重复定义。
从你的错误日志可见,jetified-kotlin-stdlib-1.8.10 与 jetified-kotlin-stdlib-jdk8-1.7.20 等共存,说明项目中存在跨版本标准库混用。虽然启用 android.enableJetifier=true(现已默认开启)可帮助迁移支持库,但它无法解决 Kotlin 自身的版本对齐问题。
✅ 根本解决方案:强制统一 Kotlin 标准库版本
在 app/build.gradle 文件的 dependencies 块下方(或 android 块外同级位置),添加以下全局依赖解析策略:
configurations.all {
resolutionStrategy {
eachDependency {
if (requested.group == "org.jetbrains.kotlin" &&
requested.name.startsWith("kotlin-stdlib")) {
useVersion("1.8.10") // ✅ 与你当前主版本保持一致(或升级至 1.9.20)
}
}
}
}
? 为什么选 1.8.10?
因为错误日志中 jetified-kotlin-stdlib-1.8.10 是较新版本,而 kotlin-stdlib-jdk7/8-1.7.20 是旧版扩展包。强制所有 kotlin-stdlib-* 依赖对齐到 1.8.10,可让 Gradle 自动排除冗余的旧版 JDK 模块(它们在 1.8+ 中已内置),彻底消除类重复。
? 关键注意事项:
- ✅ 此配置需置于 configurations.all { ... } 块中,作用于所有配置(implementation、api、runtimeOnly 等),确保无遗漏;
- ⚠️ 避免手动添加 kotlin-stdlib-jdk7 或 kotlin-stdlib-jdk8 —— Kotlin 1.8+ 不再推荐单独引入,应仅依赖 kotlin-stdlib;
- ? 若后续升级 Kotlin 插件(如 org.jetbrains.kotlin.android),请同步更新 useVersion(...) 中的版本号,保持一致性;
- ? 清理并重建:执行 ./gradlew clean + Build > Rebuild Project,避免缓存干扰。
? 进阶建议:
- 在 gradle.properties 中定义 Kotlin 版本常量,便于集中管理:
kotlinVersion=1.8.10
然后在 build.gradle 中引用:useVersion(kotlinVersion);
- 检查 gradle/dependency-graph(通过 ./gradlew app:dependencies --configuration implementation)确认是否仍有残留的旧版 kotlin-stdlib-*;
- Firebase BOM(com.google.firebase:firebase-bom:32.0.0)和 Compose BOM(androidx.compose:compose-bom:2022.10.00)本身不强制 Kotlin 版本,因此必须由你主动统一。
该方案已在真实多模块、Firebase + Compose 项目中验证有效,无需移除任何功能依赖,安全、稳定且符合现代 Android 构建最佳实践。











