Flutter Android 编译错误修复:JVM Target Compatibility 不一致问题记录
最近在做一个 Flutter TXT 阅读编辑器(适配 Android 14 + 三星设备),在打 release 包时遇到了一个比较典型但容易踩坑的编译错误,记录一下修复过程。
❗ 问题现象
执行构建命令:
bash
flutter build apk --release
报错如下:
text
Execution failed for task ':receive_sharing_intent:compileReleaseKotlin'.
Inconsistent JVM Target Compatibility Between Java and Kotlin Tasks
compileReleaseJavaWithJavac (1.8)
compileReleaseKotlin (17)
🔍 问题本质
一句话总结:
Java 编译版本是 1.8,但 Kotlin 是 17,JVM 目标版本不一致导致 Gradle 直接失败。
具体冲突来源:
- App module 使用 Java 17
- Kotlin target 设为 17
- 某个插件(receive_sharing_intent)仍然基于 Java 8 兼容环境
🧠 排查结果
关键问题不在主工程,而在插件:
text
:receive_sharing_intent
说明:
Flutter 多 module 构建中,插件仍然使用旧 JVM 配置
🛠️ 修复方案
✅ 方案一:关闭 lint 任务(实测可用)
在 android/build.gradle.kts(项目根目录)添加:
kotlin
subprojects {
tasks.configureEach {
if (name.contains("lint", ignoreCase = true)) {
enabled = false
}
}
}
📌 作用说明
- 禁用所有 lint 相关任务
- 避免 lint 触发 JVM target 检查
- 对 release 构建影响最小
⚠️ 方案二:忽略 JVM 兼容校验(备用)
在 android/gradle.properties 添加:
properties
kotlin.jvm.target.validation.mode=IGNORE
👉 直接忽略 Kotlin/Java 版本冲突检查
🚀 方案三:长期推荐(架构优化)
从长期维护角度,建议:
- 升级或替换 receive_sharing_intent
- 或直接使用 Flutter 原生 onNewIntent
- 避免依赖旧 Kotlin 插件
🧾 总结
这次问题本质是:
Flutter 主工程已升级 Java 17,但某个插件仍停留在旧 JVM 兼容环境,导致 Kotlin 编译失败。
通过关闭 lint 任务,可以快速绕过该问题完成构建。
🔚 结束语
Flutter + Android 混合开发中,这类 JVM 版本冲突很常见,尤其在多插件项目里。记录一下,希望能帮到遇到同样问题的开发者。