AndroidStudio 利用する Java (JDK) の選択・設定の方法

スポンサーリンク

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]

embed jdk

ここで、「Embedded JDK version 11.0.10」 を選択する。

現在の AndroidStudio には、「openjdk version "11.0.10" 2021-01-19」 が同梱されており、それを選択することもできるし、別に自分でインストールしているものも選択可能になっている。

ちなみに、JB Toolbox 利用している私のAndroidStudio 同梱のJDKホームのパスは


/Users/maochanz/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/203.7784292/Android Studio.app/Contents/jre/Contents/Home

であることがここで分かりますので直接叩いてみます。


➜  ~ /Users/nishi/Library/"Application Support"/JetBrains/Toolbox/apps/AndroidStudio/ch-0/203.7784292/"Android Studio.app"/Contents/jre/Contents/Home/bin/java -version
openjdk version "11.0.10" 2021-01-19
OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)
OpenJDK 64-Bit Server VM (build 11.0.10+0-b96-7281165, mixed mode)

影響範囲: AndroidStudio 上のすべてのプロジェクト

環境変数 JAVA_HOME の変更

利用するユーザーの環境変数の JAVA_HOME に設定する。

先程、確認した同梱JDKのパスをセットします。


➜  ~ vi .zshrc
...
export JAVA_HOME="/Users/maochanz/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/203.7784292/Android Studio.app/Contents/jre/Contents/Home"
export PATH="$JAVA_HOME/bin:$PATH"

➜  ~ source .zshrc

➜  ~ echo $JAVA_HOME
/Users/maochanz/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/203.7784292/Android Studio.app/Contents/jre/Contents/Home

➜  ~ java -version
openjdk version "11.0.10" 2021-01-19
OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)
OpenJDK 64-Bit Server VM (build 11.0.10+0-b96-7281165, mixed mode)

この環境変数を利用して AndroidStudio は、JDK の位置を認識します。

しかし、ユーザー単位の環境変数なので、これを利用した他のアプリケーションにも影響するかもしれません。

AndroidStudio の再起動で反映されます。

影響範囲: OS上 JAVA_HOME 利用アプリケーションたち

gradle.properties の org.gradle.java.home の変更

gradle.properties は、AndroidStudio 上のプロジェクトの gradle 設定ファイルです。

以下のように追記します。


org.gradle.java.home=/Users/maochanz/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/203.7784292/Android Studio.app/Contents/jre/Contents/Home

パス文字列の中にスペースがありますが、エスケープやクォートなしのそのままでいけます。

AndroidStudio 上部メニューから [Build] → [Rebuild Project] で反映されます。

Build - Rebuild project

影響範囲: AndroidStudio上 該当プロジェクト

まとめ

KMM Application
結果的には、AndroidStudio 同梱の JDK11 を利用することで、「KMM Application」を動かすことはできる。

AndroidStudio の terminal で以下のように、gradlew が、AndroidStudio 同梱の 「JVM: 11.0.10 (JetBrains s.r.o. 11.0.10+0-b96-7281165)」と表示されるのは、環境変数 JAVA_HOME を設定する場合のみ。


➜  KMM ~  ./gradlew -version 

------------------------------------------------------------
Gradle 7.3
------------------------------------------------------------

Build time:   2021-11-09 20:40:36 UTC
Revision:     96754b8c44399658178a768ac764d727c2addb37

Kotlin:       1.5.31
Groovy:       3.0.9
Ant:          Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM:          11.0.10 (JetBrains s.r.o. 11.0.10+0-b96-7281165)
OS:           Mac OS X 12.0.1 x86_64

ビルド自体は、JAVA_HOME の変更か、gradle.properties の変更、のどちらか一つで通り、生成されたアプリも問題ないようにみえる、が正しくはどうなのか。

Issue Tracker を見ていると、なんとなくまだあやしい。

👉 org.gradle.java.home - Issue Tracker 

👉 KMM まとめ 速報 - Kotlin Multiplatform Mobile 【#ios | #android】  
👉 Android Studio と JDKバージョン