解决 Flutter 构建中的 Kotlin JVM Target 报错
问题概述
在 Flutter 项目中执行 flutter build apk
命令时出现以下错误:Unknown Kotlin JVM target: 21
此问题通常发生在 Kotlin 版本不支持 Java 21 时,常见于模块(如 nb_utils
)配置不兼容。
原因分析
- Kotlin 版本过低:项目使用的 Kotlin 插件(如 1.8.0)不支持 Java 21
- 模块配置缺失:关键依赖模块(如
nb_utils
)未正确设置 JVM 目标版本 - Java/TDK 版本不匹配:JDK 版本与 Kotlin 编译目标不一致
推荐解决方案
✅ 方案一:配置全局 JVM 目标(推荐)
在 android/app/build.gradle
的 android
配置块中添加以下设置:
groovy
android {
compileSdkVersion 34
// 添加以下代码 ⬇️
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8' // 设为 Java 8 兼容版本
}
// 添加结束 ⬆️
// 其他原有配置...
}
✅ 方案二:更新依赖模块配置
如果问题由依赖库(如 nb_utils
)引起,需修改其 build.gradle
:
- 找到依赖库的构建路径(位置参考截图)
- 在库的
build.gradle
中添加相同配置:groovyandroid { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = JavaVersion.VERSION_1_8 } }
🚨 方案三:更新项目环境(进阶)
若上述无效且使用新版本 Android Studio,在以下文件同步更新版本:
更新 Gradle 插件版本
/android/settings.gradle
:groovypluginManagement { plugins { id "com.android.application" version "8.3.2" apply false id "org.jetbrains.kotlin.android" version "2.0.20" apply false } }
升级 Gradle 版本
/android/gradle/wrapper/gradle-wrapper.properties
:propertiesdistributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
关键配置说明
配置项 | 推荐值 | 作用 |
---|---|---|
jvmTarget | '1.8' | Kotlin 编译器生成 JVM 字节码的目标版本 |
sourceCompatibility | VERSION_1_8 | Java 源码编译器兼容版本 |
targetCompatibility | VERSION_1_8 | 生成的字节码运行兼容版本 |
注意事项
环境一致性检查
确认 JDK 版本与jvmTarget
匹配:bashjava -version # 应输出 JDK 8/11/17
多模块项目处理
所有依赖模块(如nb_utils
)需保持相同 JVM 目标配置避免版本冲突
第三方库强制降级操作(如示例中的webkit:1.8.0
)可能导致其他兼容问题
补充建议
- 排查依赖树:运行
./gradlew app:dependencies
检查版本冲突 - 清理缓存:修改配置后执行
flutter clean
删除构建缓存 - Kotlin 升级:如用新 JDK 特性,升级 Kotlin 至支持 Java 21 的版本(≥ Kotlin 1.9.22)
解决方案已在 Flutter GitHub Issues #156304 验证,适用于 Android Studio 2024+ 环境