
本文介绍如何解决因 android 库版本不兼容导致的 kotlin 标准库类重复(duplicate classes)错误,核心方案是降级 androidx.fragment 至 1.5.7 版本以规避 kotlin-stdlib 与 kotlin-stdlib-jdk8 的版本冲突。
本文介绍如何解决因 android 库版本不兼容导致的 kotlin 标准库类重复(duplicate classes)错误,核心方案是降级 androidx.fragment 至 1.5.7 版本以规避 kotlin-stdlib 与 kotlin-stdlib-jdk8 的版本冲突。
在使用 Gradle 8.1.1、Android Gradle Plugin 8.0.2 及 targetSdk 33 的现代 Android 项目中,即使应用本身为纯 Java 编写,仍可能因第三方依赖间接引入多个 Kotlin 标准库变体(如 kotlin-stdlib:1.8.20 和 kotlin-stdlib-jdk8:1.6.21),从而触发构建失败:
Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.20.jar (org.jetbrains.kotlin:kotlin-stdlib:1.8.20) and kotlin-stdlib-jdk8-1.6.21.jar (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21)
该错误本质是传递性依赖版本不一致:androidx.fragment:fragment:1.6.0 内部依赖了较新版本的 Kotlin 生态组件(如 kotlin-stdlib:1.8.20),而另一依赖(或旧版插件/库)又拉入了 kotlin-stdlib-jdk8:1.6.21 ——二者存在 API 重叠且无法共存。
✅ 根本解决方案:将 androidx.fragment:fragment 从 1.6.0 降级至 1.5.7:
Android 开发调试技能,通过系统 ADB 工具操作 Android 设备。以下场景必须触发此技能:(1) 直接 ADB 操作——安装 APK、查看设备列表、抓取 logcat 日志、查看已安装应用、清除应用数据、截图、重启设备、拉取/推送文件、查看 CPU/内存/电池信息、adb shell 操作;(2)...
// build.gradle (Module level)
dependencies {
// 替换前(引发冲突)
// implementation 'androidx.fragment:fragment:1.6.0'
// 替换后(已验证兼容)
implementation 'androidx.fragment:fragment:1.5.7'
implementation 'androidx.documentfile:documentfile:1.0.1'
}⚠️ 注意事项:
- 1.5.7 是 fragment 1.5.x 系列的最终稳定版,完全兼容 Android 13(API 33)及 Java 8+,功能完整性无损;
- 不建议使用 exclude 强制排除 kotlin-stdlib-jdk8,因其可能破坏 documentfile 等库的 JDK8 扩展方法(如 Files.walk() 封装);
- 若后续需升级 fragment,请同步确认其 Release Notes 中关于 Kotlin 版本对齐的说明(推荐等待 1.7.0+ 并搭配 Kotlin 1.9+ 工具链);
- 可通过 ./gradlew app:dependencies --configuration releaseRuntimeClasspath 检查实际解析的依赖树,验证冲突是否消除。
该方案简洁、安全、可复现,无需修改 Kotlin 版本或启用实验性 Gradle 功能,是当前 AGP 8.0+ 环境下处理此类跨版本 stdlib 冲突的推荐实践。

















