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

Flutter项目本地运行正常 Bitbucket流水线报compileDevDebugJavaWithJavac错误

问题根因

升级compileSdkVersion到31后,对应的Android构建工具链要求JDK版本必须为11及以上。你本地开发环境已配置高版本JDK所以运行正常,但Bitbucket流水线的默认构建环境仍使用JDK 1.8,无法识别高版本Java引入的MODULE属性注解,因此触发编译错误。

解决步骤

  • 第一步:对齐本地开发环境JDK版本
    打开Android Studio → 设置 → 构建、执行、部署 → 构建工具 → Gradle,将Gradle JDK设置为11或更高版本,建议选择Android Studio自带的JBR 11,避免版本兼容问题。
  • 第二步:修改Bitbucket流水线配置指定JDK版本
    编辑项目根目录下的bitbucket-pipelines.yml文件,使用内置JDK 11的Flutter构建镜像,或手动配置JDK 11环境:
    示例配置参考:
    image: cirrusci/flutter:3.0.0 # 3.0及以上版本官方Flutter镜像默认预装JDK 11
    pipelines:
      default:
        - step:
            name: 安卓端构建
            caches:
              - gradle
              - flutter
            script:
              - flutter pub get
              - flutter build apk --debug
    
  • 第三步:兜底配置(如修改镜像后仍报错可执行)
    在项目android/app/build.gradle文件中新增如下配置,强制指定编译使用的Java版本:
    android {
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_11
            targetCompatibility JavaVersion.VERSION_11
        }
        kotlinOptions {
            jvmTarget = "11"
        }
    }
    

替代方案(无需升级JDK)

如果你不想升级JDK版本,也可以通过锁定核心依赖版本解决最初的lStar报错,无需升级compileSdkVersion到31:
在android/app/build.gradle的依赖项中强制指定core-ktx版本为1.6.0:

dependencies {
    implementation "androidx.core:core-ktx:1.6.0"
    // 其余原有依赖保留
}

core-ktx 1.7.0及以上版本才会引入要求compileSdk 31的lStar属性,锁定为1.6.0版本即可绕过第一个报错,无需调整SDK版本和JDK版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:51:02