MacOS下Flutter Doctor提示Android SDKManager运行失败求助
macOS下Flutter Doctor Android许可证问题解决指南
问题背景
我卡在Flutter Doctor检测出的Android许可证问题上,试了各种方法都没解决。当前用的是Java 8,Android Studio的组件全装了,应用能正常运行,但担心后续会引发隐患,求macOS下的解决办法。
执行命令及报错信息
~ % flutter doctor Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel stable, 3.16.9, on macOS 13.1 22C65 darwin-arm64, locale it-IT) [!] Android toolchain - develop for Android devices (Android SDK version 34.0.0) ✗ Android license status unknown. Run `flutter doctor --android-licenses` to accept the SDK licenses. See https://flutter.dev/docs/get-started/install/macos#android-setup for more details. [✓] Xcode - develop for iOS and macOS (Xcode 14.2) [✓] Chrome - develop for the web [✓] Android Studio (version 2022.1) [✓] VS Code (version 1.86.0) [✓] Connected device (3 available) [✓] Network resources ! Doctor found issues in 1 category. ~ % flutter doctor --android-licenses Errore: LinkageError durante il caricamento della classe principale com.android.sdklib.tool.sdkmanager.SdkManagerCli java.lang.UnsupportedClassVersionError: com/android/sdklib/tool/sdkmanager/SdkManagerCli has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0 Android sdkmanager tool was found, but failed to run (/Users/ricca/Library/Android/sdk/cmdline-tools/latest/bin/sdkmanager): "exited code 1". Try re-installing or updating your Android SDK, visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions.
已尝试的操作
- 配置过JAVA_HOME、ANDROID_HOME环境变量
- 在Android Studio中重新安装了build-tools
- 试过安装Java 17,但不确定这是否为最优解决方案
核心原因
报错中的UnsupportedClassVersionError直接点明问题:Android SDK 34配套的sdkmanager工具是用Java 17(class文件版本61.0)编译的,但当前系统使用的Java版本仅支持到55.0(对应Java 11),版本不兼容导致许可证验证命令无法运行。
解决步骤
1. 安装Java 17
这是必须操作,Android SDK 34及以上版本的命令行工具依赖Java 17。通过Homebrew安装最便捷:
brew install openjdk@17
- arm架构Mac的Java 17默认路径:
/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home - Intel架构Mac的Java 17默认路径:
/usr/local/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home
2. 配置Java环境变量
编辑你的shell配置文件(比如~/.zshrc或~/.bash_profile),添加以下内容:
# 配置Java 17为默认JDK export JAVA_HOME="/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home" export PATH="$JAVA_HOME/bin:$PATH"
保存后执行命令使配置生效:
source ~/.zshrc
验证Java版本是否切换成功:
java -version
输出应显示Java 17相关信息。
3. 重新运行许可证验证
执行命令接受所有Android SDK许可证:
flutter doctor --android-licenses
按提示输入y确认接受所有许可证即可。
4. 验证问题解决
再次运行flutter doctor,确认Android toolchain的问题已修复。
补充说明
- Java 8无法兼容Android SDK 34的sdkmanager,升级到Java 17是官方推荐的最优解,不会影响现有Flutter项目——项目代码依然可以用Java 8编写,Android Studio会自动处理编译版本适配。
- 如果系统中安装了多个Java版本,务必确保
JAVA_HOME指向Java 17,避免环境变量冲突。
内容的提问来源于stack exchange,提问作者Riccardo Zanardi
相关产品推荐
相关产品推荐

