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

Navigation Compose 2.6.0依赖引入后出现重复类错误求助

Kotlin标准库版本冲突导致Jetpack Navigation依赖添加后重复类错误

问题场景

在Android Studio Flamingo 2022.2.1 Patch 2中从零创建Jetpack Compose新项目,仅添加官方文档指定的Jetpack Navigation依赖:

implementation("androidx.navigation:navigation-compose:2.6.0")

无其他自定义代码或额外依赖,但构建时触发checkDebugDuplicateClasses任务失败,错误信息示例:

Execution failed for task ':app:checkDebugDuplicateClasses'
A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable

进一步查看错误详情,所有重复类均来自kotlin-stdlib-1.8.20和kotlin-stdlib-jdk8-1.7.20的版本冲突,比如:

> Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.20 (org.jetbrains.kotlin:kotlin-stdlib:1.8.20) and kotlin-stdlib-jdk8-1.7.20 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.20)

尝试过Invalidate Cache and Restart、更新IDE及依赖版本均无效;使用dependencyInsight工具时遇到JAVA_HOME环境变量错误;改用旧版Jetpack Navigation或新建项目后自动生成的依赖变更可正常运行,但不清楚底层原因。

错误原因

Jetpack Navigation Compose 2.6.0依赖的Kotlin版本与新项目默认引入的Kotlin标准库版本不匹配,导致依赖树中同时出现了不同版本的kotlin-stdlib和kotlin-stdlib-jdk8,两者包含重复的类文件,触发Gradle的重复类检测机制。

解决方案

1. 强制统一Kotlin标准库版本

在项目根目录的build.gradle(或build.gradle.kts)中添加版本约束,强制所有模块使用同一版本的Kotlin标准库:

Groovy语法

allprojects {
    configurations.all {
        resolutionStrategy {
            force 'org.jetbrains.kotlin:kotlin-stdlib:1.8.20'
            force 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.20'
        }
    }
}

Kotlin DSL语法

allprojects {
    configurations.all {
        resolutionStrategy {
            force("org.jetbrains.kotlin:kotlin-stdlib:1.8.20")
            force("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.20")
        }
    }
}

2. 同步Navigation依赖与项目Kotlin版本

Jetpack Navigation Compose 2.6.0要求适配Kotlin 1.8.0+版本,确保项目的Kotlin插件版本与标准库版本一致:
在项目根build.gradle中修改Kotlin插件版本:

plugins {
    id 'com.android.application' version '7.4.2' apply false
    id 'com.android.library' version '7.4.2' apply false
    id 'org.jetbrains.kotlin.android' version '1.8.20' apply false
}

3. 修复JAVA_HOME后排查依赖树

确保JAVA_HOME指向Android Studio嵌入式JDK(路径通常为Android Studio安装目录/jbr),然后执行以下命令查看冲突依赖的来源:

./gradlew app:dependencyInsight --dependency kotlin-stdlib-jdk8 --configuration debugRuntimeClasspath

临时解决方法的原理

  • 改用旧版Jetpack Navigation时,旧版本依赖的Kotlin版本与新项目默认版本匹配,不会引入冲突的标准库版本;
  • 新建项目时,Android Studio会自动同步依赖版本,统一Kotlin标准库的版本,从而避免重复类冲突。

内容的提问来源于stack exchange,提问作者W Simm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 21:20:19