将棋プログラミング

(将棋に関する)ソフトウェア開発のノウハウ等。

Android: Gradle と Java のバージョン

新しい PC で、Android Studio (Giraffe | 2022.3.1) をインストールし、従来のプロジェクトをビルドしようとしたところ、次のエラーが表示されるようになった。

Gradle project sync failed. Basic functionality.
Unable to make field private static final java.util.Map ...

これらのエラーは、色々な原因で起きるようだが、色々やってみた結果、Java のバージョンが新しいことが原因だった。

Android Gradle Plugin (AGP) Version: 3.3.3
Gradle Version: 4.10.1

この場合、Gradle で Java 21 や Java 17 を使うと、上記エラーになる。
Java 8 にすると、エラーなくビルドできるようになった。
なお、この AGP の Version は古いので、その後、更新した。

Gradle Version の設定は、File - Project Structure の Project でできる。
Java の設定は、File - Settings - Build... - Build Tools - Gradle でできる。


別のプロジェクトでは、次のエラーが表示された。

Android Gradle plugin requires Java 11 to run. 
You are currently using Java 1.8.

こういうエラーメッセージは、わかりやすい。

Android Gradle Plugin Version: 7.0.0
Gradle Version: 7.0.2
の場合、Java 17 にすると、エラーが解決した。


さらに、別のプロジェクトでは、次のエラーが表示された。

Unsupported Java. 
Your build is currently configured to use Java 17.0.6 and Gradle 6.7.1.

Possible solution:
 - Upgrade Gradle wrapper to 7.2 version and re-import the project

AGP Upgrade Assistant を使い、次の設定にしたところ、ビルドできるようになった。

Java: 17
Android Gradle Plugin Version: 7.4.2
Gradle Version: 7.5

Android Gradle プラグインと必要な環境は、次に説明されている。

developer.android.com


Android Gradle プラグイン(AGP) のバージョンと必要な Gradle のバージョン

3.3.0 ~ 3.3.3 : 4.10.1 以降
4.2.0 以降 : 6.7.1 以降
7.0 : 7.0 以降

また、必要な Java のバージョンや SDK Build Tools のバージョンも書かれている。
ただし、こういった様々なバージョンを合わせていくのは面倒なので、AGP Upgrade Assistant が便利だとわかった。
なお、AGP Upgrade Assistant を使った場合でも、Java のバージョンは更新されず、ビルドエラーになる場合もあった。

Android Studio のバージョンと必要な AGP のバージョンは、次のリリースノートに書かれている。

developer.android.com


Giraffe | 2022.3.1 の必要な AGP バージョンは、3.2 ~ 8.1 とある。

また、API レベルと Android Studio の最小バージョンと AGP の最小バージョンも書かれている。
2023年12月の時点で、必要な API レベルは 33 (Android 13) なので、Android Studio の最小バージョンは Flamingo | 2022.2.1 だが、今後、必要な API レベルが 34 (Android 14) になった場合、Hedgehog | 2023.1.1 以上にアップデイトすることが必要になる。