Skip to content

Flutter & Android: JavaとGradleのバージョン互換性エラーの解決方法

問題の説明

FlutterプロジェクトのAndroid部分で、以下のエラーが発生することがあります:

Unsupported Java. 
Your build is currently configured to use Java 17.0.2 and Gradle 7.0.2.

Possible solution:
 - Open Gradle wrapper settings, change `distributionUrl` property to use compatible Gradle version and reload the project

このエラーは、使用しているJavaバージョンとGradleバージョンが互換性がない場合に発生します。Android Studioの更新後によく見られる問題です。

根本原因

GradleとJavaの間には特定の互換性要件があります。各Gradleバージョンは特定のJavaバージョン範囲でのみ動作します。互換性のない組み合わせを使用すると、ビルドエラーが発生します。

互換性マトリックス

GradleとJavaの互換性関係は以下の通りです:

Gradleバージョン対応Javaバージョン
7.0.x11 - 16
7.1.x - 7.3.x11 - 17
7.4.x11 - 18
7.5.x11 - 18
7.6.x11 - 19
8.x11 - 20

公式ドキュメントで最新情報を確認できます。

解決方法

以下のいずれかの方法で問題を解決できます。

方法1: Gradleバージョンのアップグレード(推奨)

Gradleのバージョンを互換性があるものにアップグレードします。

  1. gradle-wrapper.propertiesファイルを開きます(android/gradle/wrapper/gradle-wrapper.properties

  2. distributionUrlを互換性のあるバージョンに変更します:

properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-all.zip

TIP

Flutterプロジェクトでは、Gradle 7.4以上を使用することを推奨します。これによりJava 17以降との互換性が確保されます。

方法2: Javaバージョンのダウングレード

Gradleバージョンを変更せずにJavaバージョンを互換性のあるものに変更します。

Android Studioでの設定方法

  1. Shiftキーを2回押して検索ボックスを表示
  2. 「jdk」と入力し、「Change Gradle JDK Location」を選択
  3. 互換性のあるJDKバージョンを選択(通常はJDK 11または17)
  4. 「OK」をクリックしてプロジェクトを再同期

または:

  1. File > Project Structure > SDK Location > Gradle Settings
  2. 「Gradle JDK」で適切なバージョンを選択
  3. 「Apply」をクリック

WARNING

JDK 11は最も広く互換性があるバージョンで、ほとんどのGradleバージョンで安定して動作します。

方法3: Androidビルドツールの更新

android/build.gradleファイルでAndroid Gradleプラグインのバージョンを更新します:

groovy
dependencies {
    classpath 'com.android.tools.build:gradle:7.3.0' // または互換性のあるバージョン
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}

実践的な解決手順

実際の問題解決には以下のステップをおすすめします:

bash
# Javaバージョン確認
java -version

# Gradleバージョン確認(プロジェクトルートで)
./gradlew --version
properties
# 互換性のある組み合わせの例
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-all.zip
groovy
// 互換性のあるAndroid Gradleプラグイン
classpath 'com.android.tools.build:gradle:7.3.1'

トラブルシューティング

プロジェクトの再同期

設定変更後は必ず以下を実行してください:

  1. Android Studioで File > Sync Project with Gradle Files
  2. またはツールバーの「Sync Now」ボタンをクリック

キャッシュのクリア

問題が解決しない場合は、キャッシュをクリアしてみてください:

bash
# Gradleキャッシュのクリア
./gradlew cleanBuildCache

# またはAndroid Studioを再起動
# File > Invalidate Caches / Restart

予防策

  1. 定期的な更新: Flutter、Android Studio、Gradleを定期的に更新する
  2. 互換性の確認: JavaまたはGradleを更新する前に互換性表を確認する
  3. バージョン固定: プロジェクトで特定のバージョンを使用し、無闇に更新しない

まとめ

JavaとGradleのバージョン不一致エラーは、以下のいずれかで解決できます:

  • Gradleバージョンをアップグレードする(方法1)
  • Javaバージョンをダウングレードする(方法2)
  • Androidビルドツールを更新する(方法3)

最も安全で推奨される方法は、Gradleを7.4以上にアップグレードし、JDK 11または17を使用することです。これにより、現在および将来のFlutterプロジェクトでの互換性問題を最小限に抑えられます。