Android アプリ開発のために Flutter を導入したのですが,環境構築時につまるところがあったのでメモ.
環境
- MacBook Air (m2) - macOS Sonoma 14.0
- Flutter SDK - 3.16.0
発生した問題
公式サイトの Flutter インストール方法 に沿って各種ツールのインストール&パスを通した後に flutter doctor
コマンドを実行したところ,下記のエラーが出てしまいました.
$ flutter doctor
[!] 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.
Android license status unknown
というところが気になります.
flutter doctor --android-licenses
というコマンドを打ってみろ,とのことなので試してみます.
$ flutter doctor --android-licences
Error: LinkageError occurred while loading main class 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/hogehoge/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.
Android SDK を再インストールする必要があるとのことだったので,こちらの記事 の内容を試してみましたが解決せず...
解決方法
Android SDK Command-line Tools
のバージョンを最新版ではなく 8.0
をインストール すると解決するとのこと(Stack Overflow に同様の問題が挙がっていました ).
Android Studio の SDK Manager で Android SDK Command-line Tools
のうち,バージョン 8.0
のみをインストールします.他にインストールしているバージョンがある場合はチェックを外してアンインストールします.
(画像内の赤枠で示した Show Package Details
にチェックを入れると過去のバージョンを選択できるようになります)
その後,flutter doctor
コマンドを実行すると No issues found!
と表示され,問題がないことが確認できました!
なお,Stack Overflow の記事 では Android SDK Command-line Tools
のインストールディレクトリの名前を 8.0
から latest
に変更することが勧められていますが,変更せずに flutter doctor
を実行しても問題ありませんでした.
余談
試しに Android SDK Command-line Tools
の他のバージョンをインストールしてみましたが,8.0
から 10.0
までは問題なかったものの,最新版の 11.0
だけは冒頭のエラーが発生しました.
なぜこの事象が発生するのか,その原因については見つけられませんでした.より良い解決方法は他にあるのかもしれません...
参考