VSCodeで環境設定をして、「やっとFlutterでサンプルをエミュレートできるぞ!」ってAndroidのエミュレータを動かそうとしたときに出てきた憎きエラーです。
作成した環境は以下ページを参照してください。
今回発生したエラーの内容は以下のとおりです。
FAILURE: Build failed with an exception.
* What went wrong:
Could not open cp_settings generic class cache for settings file ‘/Users/{Flutterプロジェクトのパス}/android/settings.gradle’ (/Users/hoge/.gradle/caches/7.6.3/scripts/digrbcejqtzh2o323b6w8i67r).
> BUG! exception in phase ‘semantic analysis’ in source unit ‘_BuildScript_’ Unsupported class file major version 66
* Try:
> Run with –stacktrace option to get the stack trace.
> Run with –info or –debug option to get more log output.
> Run with –scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 372ms
┌─ Flutter Fix ────────────────────────────────────────────────────────────────────────────────────┐
│ [!] Your project’s Gradle version is incompatible with the Java version that Flutter is using │
│ for Gradle. │
│ │
│ If you recently upgraded Android Studio, consult the migration guide at │
│ https://flutter.dev/to/to/java-gradle-incompatibility. │
│ │
│ Otherwise, to fix this issue, first, check the Java version used by Flutter by running `flutter │
│ doctor –verbose`. │
│ │
│ Then, update the Gradle version specified in │
│ /{Flutterプロジェクトのパス}/android/gradle/wrapper/gradle-wrapper │
│ .properties to be compatible with that Java version. See the link below for more information on │
│ compatible Java/Gradle versions: │
│ https://docs.gradle.org/current/userguide/compatibility.html#java │
2
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
Error: Gradle task assembleDebug failed with exit code 1
※ ” | “がたくさんありますが、コンソール画面ではこれで四角い枠がつくられてます。
こういうエラーはモチベが落ちるので、とっとと解決させちゃいましょう。
エラーの原因
このエラーはGradle のバージョン競合やバグ、JDK 22 のビルド失敗などの原因で発生することがあるようです。
つまるところ、多分Javaのバージョンに問題があるよってこと。おそらくは。きっと。
Gradleはビルドツールになります。なので実行の前処理のビルド過程でエラーが起きて、このような結果になっているようです。
前置きはここまでにして、JDK, Gradleのバージョンを見直してみましょう。以降はその手順です。
バージョン確認
まず、エラーの中に書かれているこれのリンクに飛びます。
│ compatible Java/Gradle versions: │
│ https://docs.gradle.org/current/userguide/compatibility.html#java │
GradleとJavaの組み合わせ表が記載されているので、それに合わせる必要があります。
まず自分の環境にあるGradleのバージョンを確認しましょう。
flutterプロジェクトの/android/gradle/gradle-wrapper.properties
を開くと、以下のような記載があると思います。
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip
ここに書いてあるgradle-7.6.3-all.zipがバージョンになります。
私の環境のGradleは7.6になっているようなので、先ほどのページの対応表に照らし合わせるとJava19を用意する必要があるようです。
では、Javaのバージョンを確認してみます。以下のコマンドを実行。
java --version
> java 22.0.2 2024-07-16
> Java(TM) SE Runtime Environment (build 22.0.2+9-70)
> Java HotSpot(TM) 64-Bit Server VM (build 22.0.2+9-70, mixed mode, sharing)
バージョンは22でした。合っていないのでこれが原因っぽい。
Gradleの方が古いようなので、今回はこちらのバージョンを上げます。
なお、Javaのバージョンを上げる場合は冒頭リンクの記事見ればわかると思います。
Gradleのバージョンを上げる
Gradleのバージョンを上げるにはさきほどのandroid/gradle/wrapper/gradle-wrapper.properties
を書き換えます。
書き換えるのはdistributionUrlで、バージョンを適したものに変更します。
# distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip //これまでのは消す
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-all.zip //7.6.3を8.8に変更
ちなみにバージョンの情報は以下を参考にしました。
https://services.gradle.org/distributions
gradle-wrapper.propertiesの変更を保存したら、念の為関連する同フォルダのgradle-wrapper.jar
も削除(この後自動で生成されます)
その後以下2コマンドを実行
flutter clean
flutter pub get
VSCodeを再起動させておくと良いと書かれた記事がありましたので、一応共有。
これで完了です。改めてエミュレータを実行しましょう。
初回は変更バージョンに必要なファイルを取得する処理が走るので、時間がかかります。
タイムアウトしたら沼に落ちた
バージョン変更後最初のビルドで時間がかかるのですが、通信が遅いネットワークだとタイムアウトが発生します。
Gradle threw an error while downloading artifacts from the network.
こんな内容ですね。
「ちゃんとしたネットワークでやれば解決だろ」って思っていたのですが、ちょっと深みにハマってしまったので、もし同じ問題が起きたら以下のページを参考にしてください。
本当環境構築って重たいよね。。
Flutter初心者仲間の時間が少しでも守られると嬉しいです。
コメント
コメント一覧 (1件)
[…] Flutterで"Could not open cp_settings generic class cache for settings file …"エラー […]