升级Kotlin版本后Flutter项目构建出现重复类错误求助
解决方案:Kotlin版本更新后Flutter Android构建冲突问题
核心问题分析
你遇到的Duplicate class错误是因为项目依赖中同时存在不同版本的Kotlin标准库:新版本kotlin-stdlib:1.8.0-Beta(可能由某个插件间接引入)和旧版本kotlin-stdlib-jdk8:1.5.31,两者的JDK8扩展类重复;而StackOverflowError多是Gradle在解析冲突依赖时的递归调用导致。
分步解决方法
1. 强制统一所有Kotlin依赖版本
在android/build.gradle的allprojects块中添加版本强制规则,确保所有依赖都使用你指定的1.7.21版本:
allprojects { repositories { google() mavenCentral() } // 添加这段配置强制统一Kotlin版本 configurations.all { resolutionStrategy { force "org.jetbrains.kotlin:kotlin-stdlib:1.7.21" force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.21" force "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.21" force "org.jetbrains.kotlin:kotlin-reflect:1.7.21" } } }
2. 升级过时的Flutter插件
部分第三方插件可能依赖旧版Kotlin,运行以下命令检查并更新插件:
flutter pub outdated
将输出中标记为outdated的插件版本升级到支持Kotlin 1.7+的最新版,修改pubspec.yaml后执行flutter pub get。
3. 彻底清理构建缓存
执行以下命令清除所有残留缓存,避免旧依赖干扰:
flutter clean rm -rf android/.gradle android/build ios/Pods ios/Podfile.lock flutter pub get cd android && ./gradlew cleanBuildCache cd ..
4. 升级Gradle适配Kotlin 1.7
如果仍出现StackOverflowError,说明当前Gradle版本与Kotlin 1.7不兼容,需升级Gradle:
- 修改
android/build.gradle中的Gradle插件版本:
buildscript { ext.kotlin_version = '1.7.21' repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.4.2' // 适配Kotlin 1.7的稳定版 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
- 修改
android/gradle/wrapper/gradle-wrapper.properties中的Gradle分发版本:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
内容的提问来源于stack exchange,提问作者Vaidik Kamde
相关产品推荐
相关产品推荐

