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.x | 11 - 16 |
7.1.x - 7.3.x | 11 - 17 |
7.4.x | 11 - 18 |
7.5.x | 11 - 18 |
7.6.x | 11 - 19 |
8.x | 11 - 20 |
公式ドキュメントで最新情報を確認できます。
解決方法
以下のいずれかの方法で問題を解決できます。
方法1: Gradleバージョンのアップグレード(推奨)
Gradleのバージョンを互換性があるものにアップグレードします。
gradle-wrapper.properties
ファイルを開きます(android/gradle/wrapper/gradle-wrapper.properties
)distributionUrl
を互換性のあるバージョンに変更します:
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での設定方法
- Shiftキーを2回押して検索ボックスを表示
- 「jdk」と入力し、「Change Gradle JDK Location」を選択
- 互換性のあるJDKバージョンを選択(通常はJDK 11または17)
- 「OK」をクリックしてプロジェクトを再同期
または:
- File > Project Structure > SDK Location > Gradle Settings
- 「Gradle JDK」で適切なバージョンを選択
- 「Apply」をクリック
WARNING
JDK 11は最も広く互換性があるバージョンで、ほとんどのGradleバージョンで安定して動作します。
方法3: Androidビルドツールの更新
android/build.gradle
ファイルでAndroid Gradleプラグインのバージョンを更新します:
dependencies {
classpath 'com.android.tools.build:gradle:7.3.0' // または互換性のあるバージョン
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
実践的な解決手順
実際の問題解決には以下のステップをおすすめします:
# Javaバージョン確認
java -version
# Gradleバージョン確認(プロジェクトルートで)
./gradlew --version
# 互換性のある組み合わせの例
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-all.zip
// 互換性のあるAndroid Gradleプラグイン
classpath 'com.android.tools.build:gradle:7.3.1'
トラブルシューティング
プロジェクトの再同期
設定変更後は必ず以下を実行してください:
- Android Studioで File > Sync Project with Gradle Files
- またはツールバーの「Sync Now」ボタンをクリック
キャッシュのクリア
問題が解決しない場合は、キャッシュをクリアしてみてください:
# Gradleキャッシュのクリア
./gradlew cleanBuildCache
# またはAndroid Studioを再起動
# File > Invalidate Caches / Restart
予防策
- 定期的な更新: Flutter、Android Studio、Gradleを定期的に更新する
- 互換性の確認: JavaまたはGradleを更新する前に互換性表を確認する
- バージョン固定: プロジェクトで特定のバージョンを使用し、無闇に更新しない
まとめ
JavaとGradleのバージョン不一致エラーは、以下のいずれかで解決できます:
- Gradleバージョンをアップグレードする(方法1)
- Javaバージョンをダウングレードする(方法2)
- Androidビルドツールを更新する(方法3)
最も安全で推奨される方法は、Gradleを7.4以上にアップグレードし、JDK 11または17を使用することです。これにより、現在および将来のFlutterプロジェクトでの互換性問題を最小限に抑えられます。