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
相关产品推荐
相关产品推荐

