You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 11:31:00