Android Studio中Kotlin重复类编译失败问题求助
错误信息
FAILURE: Build failed with an exception.
- What went wrong:
Execution failed for task ':app:checkDebugDuplicateClasses'.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.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and kotlin-stdlib-jdk8-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21)
Duplicate class kotlin.internal.jdk7.JDK7PlatformImplementations found in modules kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and kotlin-stdlib-jdk7-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21)
...(其他重复类错误)
当前Gradle配置
模块级Build.Gradle(:app)
plugins { id 'com.android.application' id 'com.google.gms.google-services' } android { namespace 'com.example.simpleloginapp' compileSdk 33 defaultConfig { applicationId "com.example.simpleloginapp" minSdk 24 targetSdk 33 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } buildFeatures { viewBinding true } } dependencies { implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.8.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.0' implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.0' implementation 'androidx.navigation:navigation-fragment:2.5.3' implementation 'androidx.navigation:navigation-ui:2.5.3' implementation 'com.google.firebase:firebase-auth:21.1.0' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' }
项目级Build.gradle(Simple login app)
buildscript { dependencies { classpath 'com.google.gms:google-services:4.3.15' } }// Top-level build file where you can add configuration options common to all sub-projects/modules. 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.0' apply false }
问题原因
- 模块级Gradle未应用Kotlin Android插件,导致依赖管理逻辑缺失。
- 第三方依赖(如AndroidX KTX库、Firebase)间接引入了旧版本的
kotlin-stdlib-jdk7/kotlin-stdlib-jdk8(1.6.21),而Kotlin 1.8+版本中,这些JDK适配模块已合并到kotlin-stdlib中,同时存在就会触发重复类冲突。
解决方案
步骤1:在模块级Gradle中应用Kotlin插件
修改模块级build.gradle(:app)的plugins块,添加Kotlin Android插件:
plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' // 新增此行 id 'com.google.gms.google-services' }
步骤2:强制统一Kotlin依赖版本
在模块级build.gradle(:app)的android块后添加配置,强制所有依赖使用项目指定的Kotlin版本(1.8.0):
configurations.all { resolutionStrategy { force "org.jetbrains.kotlin:kotlin-stdlib:1.8.0" force "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0" force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0" } }
步骤3:同步并重建项目
- 点击Android Studio右上角的「Sync Project with Gradle Files」同步配置。
- 执行
Build > Clean Project和Build > Rebuild Project。
可选优化:排除特定依赖中的旧Kotlin模块
如果强制版本后仍有冲突,可针对具体依赖排除旧模块,例如针对Firebase Auth:
implementation('com.google.firebase:firebase-auth:21.1.0') { exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7' exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8' }
内容的提问来源于stack exchange,提问作者LJ Castellanos

