Skip to content

解决 Flutter 构建中的 Kotlin JVM Target 报错

问题概述

在 Flutter 项目中执行 flutter build apk 命令时出现以下错误:
Unknown Kotlin JVM target: 21
此问题通常发生在 Kotlin 版本不支持 Java 21 时,常见于模块(如 nb_utils)配置不兼容。

原因分析

  1. Kotlin 版本过低:项目使用的 Kotlin 插件(如 1.8.0)不支持 Java 21
  2. 模块配置缺失:关键依赖模块(如 nb_utils)未正确设置 JVM 目标版本
  3. Java/TDK 版本不匹配:JDK 版本与 Kotlin 编译目标不一致

推荐解决方案

✅ 方案一:配置全局 JVM 目标(推荐)

android/app/build.gradleandroid 配置块中添加以下设置:

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

  1. 找到依赖库的构建路径(位置参考截图)
    依赖包位置示意
  2. 在库的 build.gradle 中添加相同配置:
    groovy
    android {
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
        kotlinOptions {
            jvmTarget = JavaVersion.VERSION_1_8
        }
    }

🚨 方案三:更新项目环境(进阶)

若上述无效且使用新版本 Android Studio,在以下文件同步更新版本:

  1. 更新 Gradle 插件版本
    /android/settings.gradle

    groovy
    pluginManagement {
        plugins {
            id "com.android.application" version "8.3.2" apply false
            id "org.jetbrains.kotlin.android" version "2.0.20" apply false
        }
    }
  2. 升级 Gradle 版本
    /android/gradle/wrapper/gradle-wrapper.properties

    properties
    distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip

关键配置说明

配置项推荐值作用
jvmTarget'1.8'Kotlin 编译器生成 JVM 字节码的目标版本
sourceCompatibilityVERSION_1_8Java 源码编译器兼容版本
targetCompatibilityVERSION_1_8生成的字节码运行兼容版本

注意事项

  1. 环境一致性检查
    确认 JDK 版本与 jvmTarget 匹配:

    bash
    java -version  # 应输出 JDK 8/11/17
  2. 多模块项目处理
    所有依赖模块(如 nb_utils)需保持相同 JVM 目标配置

  3. 避免版本冲突
    第三方库强制降级操作(如示例中的 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+ 环境