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

Flutter Android构建因JDK/compileOptions配置失败求助

问题原因与解决方案

第一个错误(配置Java 17后Release构建失败)

原因

Android 35(API 35)的core-for-system-modules.jar是基于JDK 21构建的系统模块,使用JDK 17的jlink工具处理该文件时会出现兼容性冲突。Debug模式下Android Gradle Plugin(AGP)会跳过部分JDK镜像生成逻辑,因此能正常构建,但Release模式会强制执行该步骤,最终导致失败。

解决方案

有两种可选方案:

  • 方案1:版本匹配调整
    要么将compileSdk降级到34(API 34),保持JDK 17的配置不变;要么升级本地JDK到21,同时修改build.gradle中的配置:

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_21
        targetCompatibility = JavaVersion.VERSION_21
    }
    
    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_21
    }
    

    同时确保Android Studio的内置JBR(JRE)版本为21(可在File > Project Structure > SDK Location > JDK location中设置)。

  • 方案2:禁用JDK镜像生成(适合保留compileSdk35+JDK17的场景)
    在项目根目录的gradle.properties文件中添加以下配置,跳过AGP的Android JDK镜像生成步骤:

    android.disableAndroidJdkImage=true
    

第二个错误(移除配置后Fastlane构建失败)

原因

移除kotlinOptions配置后,Flutter会根据当前环境的JDK版本自动设置jvmTarget。你的Fastlane环境使用的是JDK 21,但项目依赖的Kotlin插件版本过低,不支持JVM Target 21,因此抛出错误。

解决方案

  • 步骤1:明确指定JVM Target
    不要移除build.gradle中的kotlinOptions配置,统一设置为环境支持的版本(比如17),避免自动匹配到21:

    kotlinOptions {
        jvmTarget = "17"
    }
    
  • 步骤2:升级Kotlin插件版本
    在项目根目录的Project级build.gradle中,将Kotlin插件版本升级到支持JVM Target 21的版本(如1.9.0或更高):

    buildscript {
        ext.kotlin_version = "1.9.20"
        // ...其他配置
    }
    
  • 步骤3:统一Fastlane环境的JDK版本
    确保Fastlane执行环境使用的JDK版本与项目配置一致(比如JDK 17),可通过在Fastfile中指定JDK路径或设置环境变量JAVA_HOME来实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:56:04