Flutterで”Could not open cp_settings generic class cache for settings file …”エラー

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初心者仲間の時間が少しでも守られると嬉しいです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

都内Edtech企業のコーポレートエンジニア。
業務改善・自動化についての開発をしています。
エンジニア歴9年、コーポレートエンジニア歴4年。

コメント

コメント一覧 (1件)

目次