Flutter编译报错:Kotlin Gradle插件版本不兼容问题求助
dynamic_views) 问题描述
构建Android端时出现以下错误:
.gradle/caches/transforms-3/431ce31617111116ed092b20fb775fda/transformed/jetified-kotlin-stdlib-1.9.0.jar!/META-INF/kotlin-stdlib-jdk7.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.7.1.
已尝试的方案:
- 添加依赖约束:
dependencies { constraints { implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0") { because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib") } implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0") { because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib") } } }
- 修改项目级
build.gradle的Kotlin版本:
buildscript { ext.kotlin_version = '1.9.10' repositories { google() mavenCentral() } } allprojects { repositories { google() mavenCentral() } }
排查确认错误来自自定义包dynamic_views,移除该包后构建正常。该包无Android专属代码,其pubspec.yaml内容如下:
name: dynamic_views description: "A new Flutter package project." version: 0.0.1 homepage: environment: sdk: '>=3.4.1 <4.0.0' flutter: ">=1.17.0" dependencies: cached_network_image: ^3.3.1 carousel_slider: ^4.2.1 easy_debouncer: ^0.0.2 fl_chart: ^0.68.0 flutter: sdk: flutter flutter_animate: ^4.5.0 flutter_riverpod: ^2.5.1 geekyants_flutter_gauges: ^1.0.4 geolocator: ^12.0.0 google_maps_flutter: ^2.6.1 iconsax: ^0.0.8 image_picker: ^1.1.1 intl: ^0.19.0 lottie: ^3.1.2 mobile_scanner: ^5.1.1 pie_chart: ^5.4.0 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^4.0.0
注:iOS端构建完全正常。
解决方案
1. 强制统一所有依赖的Kotlin版本
在项目级build.gradle的allprojects块中添加版本强制约束,确保所有依赖都使用指定的Kotlin版本:
allprojects { repositories { google() mavenCentral() } configurations.all { resolutionStrategy { force "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.10" force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10" force "org.jetbrains.kotlin:kotlin-stdlib:1.9.10" force "org.jetbrains.kotlin:kotlin-stdlib-common:1.9.10" } } }
2. 定位冲突依赖来源
运行以下命令生成依赖树,找出引入Kotlin 1.9.0版本的具体依赖:
./gradlew app:dependencies
搜索kotlin-stdlib相关条目,定位到冲突依赖后,可针对性地添加force约束。
3. 同步Flutter SDK与Kotlin版本兼容性
确保Flutter SDK版本与Kotlin版本匹配,Flutter 3.10+推荐使用Kotlin 1.8.0+。执行以下命令升级SDK:
flutter upgrade
升级后重新同步项目。
4. 清理Gradle缓存
缓存可能导致版本残留,执行以下命令清理:
./gradlew cleanBuildCache rm -rf ~/.gradle/caches/
清理完成后重新构建项目。
5. 检查模块级Kotlin插件版本
确保android/app/build.gradle中的Kotlin插件版本与项目级定义一致,避免手动指定其他版本:
plugins { id 'com.android.application' id 'kotlin-android' id 'dev.flutter.flutter-gradle-plugin' }
内容的提问来源于stack exchange,提问作者نعمان منذر محمود الجميلي

