Flutter Doctor 报错 "无法找到捆绑的 Java 版本" 解决方案
问题描述
在更新到 Android Studio Arctic Fox (2020.3.1) 或更高版本(如 Electric Eel)后,在 M1 Apple Silicon 或 Intel Mac 上运行 flutter doctor 时,可能会遇到 "Unable to find bundled Java version"(无法找到捆绑的 Java 版本)的错误提示。
这个问题的主要原因是 Android Studio 新版从使用 jre 文件夹改为使用 jbr(JetBrains Runtime)文件夹,但 Flutter 工具仍然期望在传统位置找到 Java 运行时环境。
解决方案
macOS 解决方案
方法一:创建符号链接(推荐)
这是最简单且最有效的解决方案:
cd /Applications/Android\ Studio.app/Contents
ln -s jbr jre然后确保 Flutter 知道 Android Studio 的正确路径:
flutter config --android-studio-dir /Applications/Android\ Studio.app方法二:复制文件夹
如果您不想创建符号链接,也可以直接复制并重命名文件夹:
- 打开 Finder,进入「应用程序」
- 右键点击 Android Studio,选择「显示包内容」
- 进入「Contents」文件夹
- 复制「jbr」文件夹
- 将复制的文件夹重命名为「jre」
方法三:设置 JAVA_HOME 环境变量
WARNING
此方法可能需要额外步骤,建议先尝试上述方法。
# 将以下内容添加到 ~/.zshrc 或 ~/.bash_profile
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"然后执行:
source ~/.zshrc # 或 source ~/.bash_profileWindows 解决方案
对于 Windows 用户,可以使用以下命令创建符号链接:
- 以管理员身份打开命令提示符(CMD)
- 执行以下命令:
mklink /d "C:\Program Files\Android\Android Studio\jre" "C:\Program Files\Android\Android Studio\jbr"或者,您可以手动复制文件夹内容:
- 导航到 Android Studio 安装目录(通常为
C:\Program Files\Android\Android Studio) - 复制「jbr」文件夹中的所有内容
- 粘贴到「jre」文件夹中
验证解决方案
完成上述步骤后,运行以下命令验证问题是否已解决:
flutter doctor如果仍然遇到 Android 许可证问题,请运行:
flutter doctor --android-licenses并接受所有许可证协议。
其他提示
更新 Flutter:确保您使用的是最新版本的 Flutter,因为较新版本可能已经解决了此问题
bashflutter upgrade安装命令行工具:确保已安装 Android SDK Command-line Tools,可通过 Android Studio 的 SDK Manager 安装
检查 Android Studio 路径:确保 Flutter 知道您的 Android Studio 安装位置
bashflutter config --android-studio-dir /Applications/Android\ Studio.app
技术背景
此问题源于 Android Studio 2020.3.1(Arctic Fox)及更高版本改变了 Java 运行时的位置和结构。新版使用 jbr(JetBrains Runtime)替代了传统的 jre 文件夹,但 Flutter 工具仍然按照旧路径查找 Java 环境。
通过创建符号链接或设置正确的环境变量,您可以确保 Flutter 工具能够找到所需的 Java 运行时环境,从而解决此兼容性问题。
INFO
如果您使用的是非常规安装路径,请相应调整上述命令中的路径。
完成这些步骤后,您的 Flutter 开发环境应该能够正常识别 Android Studio 的 Java 环境,flutter doctor 将不再显示 "Unable to find bundled Java version" 错误。