Android StudioをLady bugにアップデートしたらFlutterプロジェクトが実行できなくなった対応

# はじめに
Android StudioをLadybugにアップデートしたら元々動いてたFlutterプロジェクトのビルドが通らなくなり、Java周りの設定をいじることで解消できたので記します

## 起きたこと
何気なくAndroid StudioをLady bugにアップデートしたら先ほどまで動作確認できてたFlutterプロジェクトのビルドが通らなくなりました

エラー解消後に再現したものなので正確か分かりませんがこのような感じでした

![スクリーンショット 2025-01-25 17.45.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2044482/d5459663-95e4-a7f4-8f4f-0c7364f2417d.png)

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のようでした
```gradle-wrapper.properties
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になります

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2044482/933e0508-08ef-2d0a-ef4b-ef08d377d073.png" width="500">


現在の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のままでも動いてたのでもしかしたら不要かもです）

![スクリーンショット 2025-01-25 18.21.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2044482/f53ab8d5-7b75-a059-a7f3-e19c051affba.png)

この状態でビルドしても最初のエラーと特に変わりませんでした。

`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のバージョンを揃える対応でも良いと思います