ひさびさにflutter doctor
を実行するとこんなエラーが。。
$ fvm flutter doctor Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel stable, 3.16.9, on macOS 13.2.1 22D68 darwin-arm64, locale ja-JP) [!] 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.
同意しようと実行して見ると、謎のエラーが。。
$ fvm flutter doctor --android-licenses エラー: メイン・クラスcom.android.sdklib.tool.sdkmanager.SdkManagerCliのロード中にLinkageErrorが発生しました 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/foo/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.
class file versionが異なるので、だめっぽい。
各バージョンに対応するのは、こんな感じ。
- 61.0 = Java17
- 55.0 = Java11
各Javaのバージョンを見てみると。。
# brewで入れたopenjdk $ java -version openjdk version "20.0.1" 2023-04-18 OpenJDK Runtime Environment Homebrew (build 20.0.1) OpenJDK 64-Bit Server VM Homebrew (build 20.0.1, mixed mode, sharing) $ which java /opt/homebrew/opt/openjdk/bin/java $ /usr/libexec/java_home /Users/foo/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home $ /opt/homebrew/Caskroom/android-studio/2022.1.1.20/Android\ Studio.app/Contents/jre/Contents/Home/bin/java -version openjdk version "11.0.15" 2022-04-19 OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301) OpenJDK 64-Bit Server VM (build 11.0.15+0-b2043.56-8887301, mixed mode)
解決法: Android SDK Command-line Toolsを8.0に落とす
これを参考にとりあえずの暫定対処
Android SDK Command-line Toolsは11.0を入れていたけど、
Android StudioのSDK Managerから、
11.0をアンインストールして、8.0を入れ直したらうまくいった。。
他に試した方法
Android SDK Command-line Toolsの最新化
Android SDK Command-line Toolsをlatest(12.0)にしたけど、だめだった。。
Java11を入れる
これもだめだった。。
$ brew install java11 $ export JAVA_HOME="/opt/homebrew/Cellar/openjdk@11/11.0.22/" $ export PATH="${JAVA_HOME}/bin:${PATH}" $ fvm flutter doctor --android-licenses エラー: メイン・クラスcom.android.sdklib.tool.sdkmanager.SdkManagerCliのロード中にLinkageErrorが発生しました ...