Android Studio创建Java版导航抽屉Activity遇:app:checkDebugDuplicateClasses错误
解决Android Studio导航抽屉Activity模板的kotlin-stdlib重复类错误
问题现象
使用Java语言创建导航抽屉Activity模板后,构建项目时触发app:checkDebugDuplicateClasses错误,提示不同版本的kotlin-stdlib模块存在重复类(如kotlin.collections.jdk8.CollectionsJDK8Kt),但项目中未主动使用Kotlin语言。空Activity和基础Activity模板可正常构建,且未修改模板默认内容。
原因分析
导航抽屉Activity模板默认引入了Material Components、AndroidX Navigation等组件库,这些库内部依赖Kotlin语言实现,会间接引入不同版本的Kotlin标准库。当不同库引入的Kotlin标准库版本不一致时,就会出现类重复冲突。
解决方案
1. 统一Kotlin标准库版本(推荐)
在项目根目录的build.gradle(Project级)中指定统一的Kotlin版本,强制所有依赖使用该版本:
buildscript { ext { kotlin_version = "1.8.10" // 与报错中的高版本保持一致 } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
或通过settings.gradle的版本目录管理统一版本:
dependencyResolutionManagement { repositories { google() mavenCentral() } versionCatalogs { libs { version("kotlin", "1.8.10") library("kotlin-stdlib", "org.jetbrains.kotlin", "kotlin-stdlib").versionRef("kotlin") library("kotlin-stdlib-jdk7", "org.jetbrains.kotlin", "kotlin-stdlib-jdk7").versionRef("kotlin") library("kotlin-stdlib-jdk8", "org.jetbrains.kotlin", "kotlin-stdlib-jdk8").versionRef("kotlin") } } }
2. 排除冲突的低版本Kotlin依赖
在app模块的build.gradle中,对引入Kotlin依赖的库(如Material、Navigation)排除低版本的stdlib:
dependencies { // 模板默认引入的依赖 implementation 'com.google.android.material:material:1.9.0' implementation 'androidx.navigation:navigation-fragment:2.5.3' implementation 'androidx.navigation:navigation-ui:2.5.3' // 排除低版本Kotlin标准库依赖 implementation('com.google.android.material:material:1.9.0') { exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7' exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8' } implementation('androidx.navigation:navigation-fragment:2.5.3') { exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7' exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8' } implementation('androidx.navigation:navigation-ui:2.5.3') { exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7' exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8' } }
3. 验证依赖版本一致性
执行以下命令查看项目依赖树,确认所有kotlin-stdlib相关依赖版本统一:
# macOS/Linux ./gradlew app:dependencies # Windows gradlew.bat app:dependencies
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

