Flutter运行错误:UG! exception in phase ‘semantic analysis‘

最近在Mac Mini M4上通过Android Studio导入Flutter项目并运行,结果一直跑不起来,错误日志如下:

执行命令查看版本信息:

复制代码
flutter doctor --verbose

通过输出信息Java version OpenJDK Runtime Environment (build 21.0.4±12422083-b607.1)可以知道是JDK版本不兼容问题,Flutter构建的时候默认使用了Android Studio内置的OpenJDK,最后总结了两种解决方案。

方案一:gradle.properties中配置org.gradle.java.home

通过直接修改android目录下gradle.properties指定JDK路径

复制代码
org.gradle.jvmargs=-Xmx4G -XX:+HeapDumpOnOutOfMemoryError
android.useAndroidX=true
android.enableJetifier=true
org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home

方案二:修改gradle版本

因为Flutter工程在Settings -> Build, Execution, Deployment -> Build Tools -> Gradle下看不到JDK配置项。

而正常的Android工程可以直接配置:

因此,首先通过android studio导入android目录下的子工程,然后进行配置。这时候可能会报错

根据版本对照表,修改gradle版本:

复制代码
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-all.zip

通过上面的设置就可以解决了。

附录:Java版本和Gradle版本对照表

Java Version Support for Toolchains Support for Running Gradle
8 N/A 2.0
9 N/A 4.3
10 N/A 4.7
11 N/A 5.0
12 N/A 5.4
13 N/A 6.0
14 N/A 6.3
15 6.7 6.7
16 7.0 7.0
17 7.3 7.3
18 7.5 7.5
19 7.6 7.6
20 8.1 8.3
21 8.4 8.5
22 8.7 8.8
23 8.10 8.10
24 N/A N/A

官方地址:https://docs.gradle.org/current/userguide/compatibility.html#java

感谢大家的支持,如有错误请指正,如需转载请标明原文出处!

相关推荐
程序员老刘12 小时前
Flutter你看看人家RN
flutter·react native·ai编程
大龄秃头程序员18 小时前
【Flutter Bloc 从 0 到 1】用最少代码跑通 Bloc
flutter
m0_7381858219 小时前
Flutter 鸿蒙化实战:sqflite 适配 OpenHarmony,本地 SQLite 数据库
flutter·华为·harmonyos·鸿蒙
梦曦i20 小时前
uni-app、uni-app x 与 Flutter 深度对比:2026年跨平台开发框架选型指南
flutter·uni-app·uni-app x
恋猫de小郭21 小时前
Flitz ,一个把 Flutter 玩成热插拔 Preview 的有趣项目,不错的思路
android·前端·flutter
FungLeo21 小时前
成为全栈·Flutter App 篇·Refresh Token 旋转与并发 401:安全存储与会话代次
flutter·jwt·移动安全·身份认证·token刷新·成为全栈
m0_738185821 天前
Flutter 鸿蒙化实战:simple_circular_progress_bar 适配 OpenHarmony,环形进度条
flutter·华为·harmonyos·鸿蒙
大龄秃头程序员2 天前
Riverpod 深度解析:从响应式本质到最小可运行闭环
flutter
曹小强wxx2 天前
让 AI 写代码不“翻车”:用 Claude Code + Codex 给 Flutter 项目搭一套工程规范
flutter·ai编程·claude