はじめに
Android StudioをLadybugにアップデートしたら元々動いてたFlutterプロジェクトのビルドが通らなくなり、Java周りの設定をいじることで解消できたので記します
起きたこと
何気なくAndroid StudioをLady bugにアップデートしたら先ほどまで動作確認できてたFlutterプロジェクトのビルドが通らなくなりました
エラー解消後に再現したものなので正確か分かりませんがこのような感じでした
Flutterを実行する際のGradleのバージョンとJavaバージョンの互換性がないといったエラーのようです
この状態でflutter doctor -v
を実行すると以下の状態になってます
[✓] Android toolchain - develop for Android devices (Android SDK version 36.0.0-rc4)
• Android SDK at /Users/〇〇/Library/Android/sdk
• Platform android-35, build-tools 36.0.0-rc4
• Java binary at: /Library/Java/JavaVirtualMachines/jdk-20.jdk/Contents/Home/bin/java
• Java version Java(TM) SE Runtime Environment (build 20+36-2344)
• All Android licenses accepted.
(再現があってればおそらく)Java20をFlutterで使用していたようです
対応
Gradleのバージョンと使用するJavaのバージョンを一致させることで問題は解消しました
Flutterプロジェクトにあるgradle-wrapper.properties
に記載されている以下を確認すると設定されているGradleのバージョンは7.5のようでした
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
https://docs.gradle.org/current/userguide/compatibility.html#java_runtime
こちらにある対応表を見るとGradle7.5に対応しているJavaのバージョンは18になります

現在のFlutterで使用しているJavaのバージョンは20だったのでこれを18することで対応します
以下でJava18.0.2.1
をダウンロードし、/Library/Java/JavaVirtualMachines/
に配置しました
https://www.oracle.com/java/technologies/javase/jdk18-archive-downloads.html
nano ~/.zshrc
をターミナルで実行し、以下を追加しました
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-18.0.2.1.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
source ~/.zshrc
を実行し、Android StudioのProject StructureにもダウンロードとしたJava18を設定しました(こちらの.zshrc
の設定は後で確認したらJava20のままでも動いてたのでもしかしたら不要かもです)
この状態でビルドしても最初のエラーと特に変わりませんでした。
flutter doctor -v
を実行すると以下の出力となっていてFlutter実行時にまだJava20を使っているようでした
[✓] Android toolchain - develop for Android devices (Android SDK version 36.0.0-rc4)
• Android SDK at /Users/〇〇/Library/Android/sdk
• Platform android-35, build-tools 36.0.0-rc4
• Java binary at: /Library/Java/JavaVirtualMachines/jdk-20.jdk/Contents/Home/bin/java
• Java version Java(TM) SE Runtime Environment (build 20+36-2344)
• All Android licenses accepted.
FlutterでJava18を使うようにするにはどうすれば良いのかわからず、/Library/Java/JavaVirtualMachines/
にjdk-20.jdk
とjdk-18.0.2.1.jdk
が両方ある状態なのでjdk-20.jdk
が優先されてしまってると思い、jdk-20.jdk
を消したのですが、
[!] Android toolchain - develop for Android devices (Android SDK version 36.0.0-rc4)
• Android SDK at /Users/〇〇/Library/Android/sdk
• Platform android-35, build-tools 36.0.0-rc4
• Java binary at: /Library/Java/JavaVirtualMachines/jdk-20.jdk/Contents/Home/bin/java
✗ Cannot execute /Library/Java/JavaVirtualMachines/jdk-20.jdk/Contents/Home/bin/java to determine the version
Java20が無いとエラーが出るだけで、Java20を消せばJava18を見てくれるということではありませんでした
調べたところFlutterで使用するJavaを設定するコマンドがあり、以下を実行することで、
flutter config --jdk-dir="/Library/Java/JavaVirtualMachines/jdk-18.0.2.1.jdk/Contents/Home"
flutter doctor -v
でちゃんとjava18を見てくれるようになりました
flutter doctor -v
の実行結果
[✓] Android toolchain - develop for Android devices (Android SDK version 36.0.0-rc4)
• Android SDK at /Users/〇〇/Library/Android/sdk
• Platform android-35, build-tools 36.0.0-rc4
• Java binary at: /Library/Java/JavaVirtualMachines/jdk-18.0.2.1.jdk/Contents/Home/bin/java
• Java version Java(TM) SE Runtime Environment (build 18.0.2.1+1-1)
• All Android licenses accepted.
これらの設定をすることで元々動いてたFlutterプロジェクトをAndroid Studio Ladybugで実行できるようになりました
最後に
今回はJavaのバージョンを変える対応をしましたが、Javaのバージョンに合わせてgradleのバージョンを揃える対応でも良いと思います