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

MacOS Apple Silicon升级Android SDK后Flutter仍用旧Java无法编译

解决Flutter识别旧版JDK导致的Android许可证签署失败问题

核心原因

Android SDK 35要求使用JDK 17+,但Flutter默认优先读取Android Studio内置的JDK(11.0.10),与你通过Homebrew安装的OpenJDK 22路径冲突,导致sdkmanager无法正常运行,进而无法完成许可证签署。

具体解决步骤

1. 确认Homebrew安装的JDK路径

执行以下命令获取OpenJDK 22的完整安装路径:

/usr/libexec/java_home -v 22

输出示例:/Library/Java/JavaVirtualMachines/openjdk-22.jdk/Contents/Home

2. 强制Flutter使用指定JDK

通过配置环境变量让Flutter优先读取你安装的JDK,分两种方式:

临时生效(仅当前终端会话)

执行以下命令替换为你实际的JDK路径:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-22.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

随后运行flutter doctor检查JDK版本是否更新为22.0.2。

永久生效(所有终端会话)

编辑你的shell配置文件(zsh用户为~/.zshrc,bash用户为~/.bash_profile):

open ~/.zshrc

在文件末尾添加以下内容(自动获取JDK 22路径):

export JAVA_HOME=$(/usr/libexec/java_home -v 22)
export PATH=$JAVA_HOME/bin:$PATH

保存后执行命令使配置生效:

source ~/.zshrc

3. 验证配置并签署许可证

重新运行:

flutter doctor

确认JDK版本显示为22.0.2后,执行许可证签署命令:

flutter doctor --android-licenses

按提示输入y完成所有许可证的签署操作。

4. 额外排查(若问题仍存在)

  • 打开Android Studio,进入File > Project Structure > SDK Location,确认JDK location选择的是你安装的OpenJDK 22路径,而非Android Studio内置JDK。
  • 重启Android Studio和终端,确保环境变量完全生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 17:33:13