降级Flutter至2.2.0后Android Studio提示无法找到捆绑Java版本
我在VS Code里开发一个旧Flutter项目,这个项目没法用最新Flutter版本构建,所以通过git checkout 2.2.0降级到了前开发者用的版本。运行flutter doctor时,其他检查项都正常,但Android Studio项出现了**"Unable to find bundled Java version"**警告。
我已经试过这些常见方案,但都没用:
- 在
/Applications/Android Studio.app/Contents/目录下创建jre指向jbr的符号链接,无效。 - 在
.bashrc里通过export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/Contents/Home"明确设置JAVA_HOME,虽然设置成功但警告还在,换成jbr目录也一样。 - 更新并重新安装Android Studio。
附flutter doctor -v输出:
$ flutter doctor -v [✓] Flutter (Channel unknown, 2.2.0, on macOS 13.6 22G120 darwin-x64, locale en-US) • Flutter version 2.2.0 at /Users/bguiles/Development/flutter • Framework revision b22742018b (2 years, 5 months ago), 2021-05-14 19:12:57 -0700 • Engine revision a9d88a4d18 • Dart version 2.13.0 [✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0) • Android SDK at /Users/bguiles/Library/Android/sdk • Platform android-34, build-tools 34.0.0 • ANDROID_HOME = /Users/bguiles/Library/Android/sdk • ANDROID_SDK_ROOT = /Users/bguiles/Library/Android/sdk • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231) • All Android licenses accepted. [✓] Xcode - develop for iOS and macOS • Xcode at /Applications/Xcode.app/Contents/Developer • Xcode 15.0, Build version 15A240d • CocoaPods version 1.13.0 [✓] Chrome - develop for the web • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome [!] Android Studio (version 2022.3) • Android Studio at /Applications/Android Studio.app/Contents • Flutter plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/6351-dart ✗ Unable to find bundled Java version. • Try updating or re-installing Android Studio. [✓] VS Code (version 1.82.2) • VS Code at /Applications/Visual Studio Code.app/Contents • Flutter extension version 3.72.0 [✓] Connected device (2 available) • iPhone 15 (mobile) • 64ED10B4-7FDA-44CF-B82E-AF4E36AF3269 • ios • com.apple.CoreSimulator.SimRuntime.iOS-17-0 (simulator) • Chrome (web) • chrome • web-javascript • Google Chrome 117.0.5938.132 ! Doctor found issues in 1 category.
这个问题的核心是Flutter 2.2.0版本太老,它的doctor检测逻辑还没适配Android Studio 2020.3之后的版本——从Android Studio Arctic Fox(2020.3.1)开始,官方把内置JDK目录从jre改成了jbr,但旧版Flutter doctor只会硬找jre路径,哪怕做了软链接也可能因为检测逻辑的问题识别不到。
给你三个可行的解决方向:
1. 降级Android Studio到适配版本
直接把Android Studio降级到Flutter 2.2.0发布时(2021年5月)的主流版本,比如Android Studio 4.2.x或者Arctic Fox(2020.3.1),这些版本仍自带jre目录,旧版Flutter doctor能正常识别,不会再出警告。
2. 修改Flutter Doctor的检测逻辑(不用降级AS)
如果不想换Android Studio版本,可以手动修改Flutter工具的检测代码,让它能识别jbr目录:
- 打开终端,定位到Flutter安装目录的对应文件:
cd /Users/bguiles/Development/flutter/packages/flutter_tools/lib/src/android - 用编辑器打开
android_studio.dart,搜索和jre相关的路径判断(比如Path.join(installationPath, 'jre')),把它改成Path.join(installationPath, 'jbr'),或者添加判断:如果jre目录不存在,就尝试读取jbr目录。 - 回到Flutter根目录,重新编译Flutter工具:
cd /Users/bguiles/Development/flutter flutter pub get dart pub global activate -s path ./packages/flutter_tools - 重启终端后再运行
flutter doctor,警告应该就消失了。
3. 直接忽略警告(最省事)
从你的flutter doctor输出能看到,Android toolchain已经正常找到了Java环境,这个警告只是Flutter doctor检测Android Studio内置Java时的小问题,不会影响实际编译和运行项目。如果开发过程中没有遇到Java相关报错,完全可以不管这个警告,正常开发就行。
内容的提问来源于stack exchange,提问作者Ben Guiles

