You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter构建APK报错:Unknown Kotlin JVM Target:21(nb_utils模块)

解决Flutter构建APK时nb_utils模块的“Unknown Kotlin JVM Target: 21”错误

问题重现

执行flutter build apk时触发如下错误:

FAILURE: Build failed with an exception.

  • 出错原因:无法确定任务':nb_utils:compileReleaseKotlin'的依赖项。

Unknown Kotlin JVM target: 21

  • 建议尝试:

使用--stacktrace选项获取堆栈跟踪;使用--info或--debug选项获取更多日志输出;使用--scan选项获取完整分析;访问https://help.gradle.org获取更多帮助。
BUILD FAILED in 1s
Running Gradle task 'assembleRelease'...
1,620ms
Gradle task assembleRelease failed with exit code 1

当前项目app/build.gradle配置如下:

plugins {
    id "com.android.application"
    id "kotlin-android"
    id "dev.flutter.flutter-gradle-plugin"
    id "com.google.gms.google-services"
}

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

android {
    compileSdkVersion 34

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    lintOptions {
        disable 'InvalidPackage'
    }

    defaultConfig {
        applicationId "com.mighty.web"
        minSdkVersion 22
        targetSdkVersion 34
        versionCode 36
        versionName "5.0.2"
        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            shrinkResources false
            signingConfig signingConfigs.debug
        }
    }

    googleServices { disableVersionCheck = true }

}

flutter {
    source '../..'
}
allprojects {
    /// TODO: remove. hotfix for flutter_inappwebview (using androidx.webkit:webkit:1.8.0)
    /// webview_flutter_android: ^3.16.2 androidx.webkit:webkit ^1.9.0 remove SUPPRESS_ERROR_PAGE
    configurations.all {
        resolutionStrategy {
            force 'androidx.webkit:webkit:1.8.0'
        }
    }
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0"
    implementation 'androidx.multidex:multidex:2.0.1'
    implementation 'com.google.firebase:firebase-analytics:21.2.2'
    implementation 'com.google.android.gms:play-services-basement:18.2.0'
}

解决方案

1. 升级Kotlin版本并配置JVM目标

当前项目使用的Kotlin 1.8.0不支持JVM Target 21,需升级到1.9.0及以上版本(该版本开始支持JVM 21),同时明确指定JVM目标为你正在使用的Java 11:

  • 修改app/build.gradle中的Kotlin依赖:
    dependencies {
        // 替换旧版本为1.9.20或更高兼容版本
        implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.20"
        // 其他依赖保持不变
    }
    
  • 在android代码块中添加Kotlin编译选项:
    android {
        // 现有配置保持不变
        
        kotlinOptions {
            jvmTarget = "11" // 匹配你的Java SDK版本
        }
    }
    

2. 全局强制所有模块使用统一JVM目标

如果nb_utils模块自身硬编码了JVM Target 21,可在项目根目录的build.gradle中添加全局配置,强制覆盖所有模块的Kotlin编译选项:

allprojects {
    repositories {
        // 保持原有仓库配置(如google(), mavenCentral())
    }

    // 添加这段配置
    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
        kotlinOptions {
            jvmTarget = "11"
        }
    }
}

3. 确认Java SDK路径正确

检查local.properties文件中是否正确指向Java 11的安装路径:

org.gradle.java.home=/path/to/your/java11

4. 升级nb_utils依赖

尝试将pubspec.yaml中的nb_utils版本升级到最新稳定版,新版本可能已修复JVM目标相关问题,执行flutter pub get更新依赖。

验证

完成上述配置后,依次执行flutter clean和flutter build apk,确认错误是否解决。

内容的提问来源于stack exchange,提问作者sirushti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 22:33:22