克隆Flutter项目到新设备后构建失败:Unknown Kotlin JVM target: 21
看起来你在新机器上跑克隆的Flutter项目时踩了版本匹配的坑,这个问题我之前帮朋友排查过,大概率是你的本地开发环境(Kotlin/Android Gradle插件版本)和项目依赖的flutter_image_compress_common模块要求的JVM目标版本不兼容导致的——这个依赖指定了JVM target 21,但你的环境里的工具还不支持这个版本。
先把你遇到的错误信息贴出来方便对照:
FAILURE: Build failed with an exception.
- What went wrong: Could not determine the dependencies of task ':flutter_image_compress_common:compileDebugKotlin'.
Unknown Kotlin JVM target: 21
给你几个实用的解决步骤,按顺序试就行:
更新Kotlin和Android Gradle插件(AGP)版本
找到项目根目录下的项目级build.gradle(不是app模块的那个),定位到ext.kotlin_version和AGP依赖行,把它们更新到支持JVM 21的版本:buildscript { ext.kotlin_version = '1.9.20' // *Kotlin 1.9+*才支持JVM 21,选最新稳定版也可以 repositories { google() mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:8.2.0" // *AGP 8.0+*支持JVM 21,版本要和Kotlin匹配 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }同步Gradle wrapper版本
打开gradle/wrapper/gradle-wrapper.properties,把distributionUrl改成和AGP版本对应的Gradle版本,比如AGP 8.2对应Gradle 8.2:distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip临时绕过方案(不推荐长期使用)
如果暂时不想做整体版本升级,也可以在app模块的build.gradle里添加配置,强制把JVM target设为你的环境支持的版本(比如17):android { // 其他原有配置... kotlinOptions { jvmTarget = "17" } }清理缓存重新构建
最后别忘了执行flutter clean,再跑flutter pub get,把旧的构建缓存清干净后重新运行项目,确保新的版本配置完全生效。
备注:内容来源于stack exchange,提问作者Pantastix

