AndroidStudio 上でプロジェクトテンプレートの「KMM Application」を動かそうとすると以下のようにコケる。
An exception occurred applying plugin request [id: 'com.android.application']
> Failed to apply plugin 'com.android.internal.application'.
> Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
You can try some of the following options:
- changing the IDE settings.
- changing the JAVA_HOME environment variable.
- changing `org.gradle.java.home` in `gradle.properties`.
* 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 509ms
Command PhaseScriptExecution failed with a nonzero exit code
** BUILD FAILED **
The following build commands failed:
PhaseScriptExecution Run\ Script
/Users/maochanz/AndroidStudioProjects/KMM/build/ios/iosApp.build/Debug-iphoneos/iosApp.build/Script-7555FFB524251A00829871.sh (in target 'iosApp' from project 'iosApp')
(1 failure)
先程のビルドエラーのメッセージにもあるように、Java 11 (JDK) を IDEである AndroidStudio に認識させる方法として、3つが挙げられている。
- IDE設定の変更
- 環境変数 JAVA_HOME の変更
- gradle.properties の org.gradle.java.home の変更
この3つのうち、どれを変更すればいいのか。
■ IDE設定の変更
AndroidStudio には、以下でビルド時のJDKを選択できる。
[Preferences]
↓
[Build]
↓
[Build Tools]
↓
[Gradle JDK]
現在の AndroidStudio には、「openjdk version "11.0.10" 2021-01-19」 が同梱されており、それを選択することもできるし、別に自分でインストールしているものも選択可能になっている。
Android Studio 2.2 以降には最新バージョンの OpenJDK のコピーがバンドルされています。この JDK バージョンを Android プロジェクトで使用することをおすすめします。https://t.co/SlOhcOr3y1
— chanzmao (@maochanz) January 27, 2023
Android Studio Electric Eel | 2022.1.1 の JDK11 設定 https://t.co/IunCsj5G3y #android #kotlin #プログラミング勉強中
— chanzmao (@maochanz) January 27, 2023
しかし、IDEA製品では、自分で入れたJDKを使うほうが良さそう。
JetBrains IDE製品には、JetBrains Runtime(JBR)と呼ばれるIDE自体の実行に使用されるJava実行環境が同梱されています。これは皆さんが書くコードのコンパイルや実行に使用するためのJDKとは(本来)別のものです。https://t.co/DCSAxaK1KA #android #kmm #androidstudio #プログラミング
— chanzmao (@maochanz) January 18, 2023
Mac に Homebrew で OpenJDK11 を インストール する https://t.co/ixFMjoNEu2 #androidstudio #Android
— chanzmao (@maochanz) November 1, 2022
インストールしたら、パスを確認しておきましょう。
❯ /usr/libexec/java_home -V
Matching Java Virtual Machines (1):
11.0.18 (x86_64) "Homebrew" - "OpenJDK 11.0.18" /usr/local/Cellar/openjdk@11/11.0.18/libexec/openjdk.jdk/Contents/Home
/usr/local/Cellar/openjdk@11/11.0.18/libexec/openjdk.jdk/Contents/Home
影響範囲: AndroidStudio 上のすべてのプロジェクト
■ 環境変数 JAVA_HOME の変更
利用するユーザーの環境変数の JAVA_HOME に設定する。
先程、確認した同梱JDKのパスをセットします。
❯ vi .zshrc
...
export JAVA_HOME=$(/usr/libexec/java_home -v11)
export PATH="$JAVA_HOME/bin:$PATH"
❯ source .zshrc
❯ echo $JAVA_HOME
/usr/local/Cellar/openjdk@11/11.0.18/libexec/openjdk.jdk/Contents/Home
❯ java -version
openjdk version "11.0.18" 2023-01-17
OpenJDK Runtime Environment Homebrew (build 11.0.18+0)
OpenJDK 64-Bit Server VM Homebrew (build 11.0.18+0, mixed mode)
この環境変数を利用して AndroidStudio は、JDK の位置を認識します。
しかし、ユーザー単位の環境変数なので、これを利用した他のアプリケーションにも影響するかもしれません。
AndroidStudio の再起動で反映されます。
影響範囲: OS上 JAVA_HOME 利用アプリケーションたち
■ gradle.properties の org.gradle.java.home の変更
gradle.properties は、AndroidStudio 上のプロジェクトの gradle 設定ファイルです。
以下のように追記します。
org.gradle.java.home=/usr/local/Cellar/openjdk@11/11.0.18/libexec/openjdk.jdk/Contents/Home
AndroidStudio 上部メニューから [Build] → [Rebuild Project] で反映されます。
影響範囲: AndroidStudio上 該当プロジェクト
■ まとめ
❯ ./gradlew -version
------------------------------------------------------------
Gradle 7.6
------------------------------------------------------------
Build time: 2022-11-25 13:35:10 UTC
Revision: daece9dbc5b79370cc8e4fd6fe4b2cd400e150a8
Kotlin: 1.7.10
Groovy: 3.0.13
Ant: Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM: 11.0.18 (Homebrew 11.0.18+0)
OS: Mac OS X 13.1 x86_64
ビルド自体は、JAVA_HOME の変更か、gradle.properties の変更、のどちらか一つで通り、生成されたアプリも問題ないようにみえる、が正しくはどうなのか。
上記の設定で改善されない場合は以下で。
Java home is different. が消えない。 https://t.co/V0tUkHuOGj #android #AndroidDev #プログラミング #kotlin #java
— chanzmao (@maochanz) November 13, 2022
【Android Studio】Settings - Build Tools - Gradle JDK の選択肢がゴミだらけで意味不明の場合
👉 https://t.co/GXGX1v50Im #android #androidstudio #gradle #jdk #プログラミング pic.twitter.com/qAl0GvxsDk— chanzmao (@maochanz) January 25, 2023
👉 Mac に Homebrew で OpenJDK11 を インストール する
👉 JetBrains Toolbox で Android Studio の Stable/Beta/Canary が同時に管理できる?
👉 Android Studio と JDKバージョン