Jetpack Compose导航开发中Kotlin依赖冲突错误求助
解决Jetpack Compose导航中的Kotlin标准库依赖冲突问题
1. 统一Kotlin版本,移除冗余stdlib依赖
从Kotlin 1.8.x开始,kotlin-stdlib-jdk7和kotlin-stdlib-jdk8已经被合并到核心的kotlin-stdlib中,显式引入这两个旧模块会直接导致类重复。
- 根项目build.gradle(或.kts):统一配置Kotlin和Compose编译器版本,确保所有模块共用同一版本:
buildscript { ext { kotlin_version = "1.9.0" // 选择和你的Compose版本兼容的稳定版 compose_compiler_version = "1.5.3" // 版本对应关系要匹配,比如Kotlin1.9对应Compiler1.5.3 } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
- 模块build.gradle:删掉
kotlin-stdlib-jdk7、kotlin-stdlib-jdk8的显式依赖,只保留核心stdlib(或直接依赖Compose,它会自动引入正确的stdlib):
dependencies { // 移除这两行冗余依赖 // implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" // implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" // 可选:显式声明核心stdlib(不写也会被Compose间接引入) implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" // Compose导航依赖示例 implementation "androidx.navigation:navigation-compose:2.7.5" }
2. 排查并排除传递依赖中的重复库
如果统一版本后仍有冲突,用Gradle命令分析依赖树,找出哪个第三方库引入了旧版本的stdlib:
./gradlew app:dependencies --configuration implementation
找到冲突的依赖后,在对应依赖项中排除冗余模块:
dependencies { implementation("androidx.navigation:navigation-compose:2.7.5") { exclude group: "org.jetbrains.kotlin", module: "kotlin-stdlib-jdk7" exclude group: "org.jetbrains.kotlin", module: "kotlin-stdlib-jdk8" } }
3. 清理缓存,重新构建
旧缓存可能残留冲突依赖,执行以下命令彻底清理后重新构建:
./gradlew clean ./gradlew build --refresh-dependencies
4. 确保Compose与Kotlin版本兼容
Compose编译器版本必须和Kotlin版本严格匹配,版本不兼容也会间接引发依赖问题。在模块build.gradle中配置:
android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion compose_compiler_version } }
对应报错示例的解决
比如你遇到的:
A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and kotlin-stdlib-jdk8-1.7.20 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.20)
本质就是不同版本的stdlib模块重复引入,按照上面的步骤统一Kotlin版本、移除旧模块依赖就能解决。
内容的提问来源于stack exchange,提问作者Sammy
相关产品推荐
相关产品推荐

