Skip to content

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 解决方案

方法一:创建符号链接(推荐)

这是最简单且最有效的解决方案:

bash
cd /Applications/Android\ Studio.app/Contents
ln -s jbr jre

然后确保 Flutter 知道 Android Studio 的正确路径:

bash
flutter config --android-studio-dir /Applications/Android\ Studio.app

方法二:复制文件夹

如果您不想创建符号链接,也可以直接复制并重命名文件夹:

  1. 打开 Finder,进入「应用程序」
  2. 右键点击 Android Studio,选择「显示包内容」
  3. 进入「Contents」文件夹
  4. 复制「jbr」文件夹
  5. 将复制的文件夹重命名为「jre」

方法三:设置 JAVA_HOME 环境变量

WARNING

此方法可能需要额外步骤,建议先尝试上述方法。

bash
# 将以下内容添加到 ~/.zshrc 或 ~/.bash_profile
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"

然后执行:

bash
source ~/.zshrc  # 或 source ~/.bash_profile

Windows 解决方案

对于 Windows 用户,可以使用以下命令创建符号链接:

  1. 以管理员身份打开命令提示符(CMD)
  2. 执行以下命令:
bash
mklink /d "C:\Program Files\Android\Android Studio\jre" "C:\Program Files\Android\Android Studio\jbr"

或者,您可以手动复制文件夹内容:

  1. 导航到 Android Studio 安装目录(通常为 C:\Program Files\Android\Android Studio
  2. 复制「jbr」文件夹中的所有内容
  3. 粘贴到「jre」文件夹中

验证解决方案

完成上述步骤后,运行以下命令验证问题是否已解决:

bash
flutter doctor

如果仍然遇到 Android 许可证问题,请运行:

bash
flutter doctor --android-licenses

并接受所有许可证协议。

其他提示

  1. 更新 Flutter:确保您使用的是最新版本的 Flutter,因为较新版本可能已经解决了此问题

    bash
    flutter upgrade
  2. 安装命令行工具:确保已安装 Android SDK Command-line Tools,可通过 Android Studio 的 SDK Manager 安装

  3. 检查 Android Studio 路径:确保 Flutter 知道您的 Android Studio 安装位置

    bash
    flutter 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" 错误。