酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

macOSで KMMのスケルトンプロジェクトの iosApp のビルドが通らない

macOSで Kotlin Multiplatform Mobile(KMM) のスケルトンプロジェクトの iosApp のビルドが通らない問題が発生した。

JVMのバージョンを11にする必要があったが、Android Studio内の設定で「Gradle JDK」を変更しても、システムのJDK(macOS組み込みのJDK)が使われてしまう問題であった。この現象が発生してしまうのが M1 Mac だからなのか macOS だからなのかについては検証できていない。

実行環境は以下の通り。

  • Android Studio Bumblebee | 2021.1.1 Patch 3
  • macOS 12.3.1
  • MacBook Pro(16インチ、2021)

KMM の iosApp のビルドができない

KMMのプラグインをインストールして、スケルトンプロジェクトを作成した。androidApp と iosApp が生成された。

androidApp の方は問題なくビルドでき Android エミュレータで実行できることを確認したが、iosApp の方はビルド時にエラーが発生してしまうことがわかった。

* What went wrong:
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 1s
** BUILD FAILED **

要はJava 1.8 ではなくて Java 11 を使えとのこと。Gradle JDK の設定値を確認してもAndroid Studioに同梱されている Java 11 を使っていることになっている。

Android Studio の Terminal で ./gradlew --version をした結果が以下の通り。

------------------------------------------------------------
Gradle 7.2
------------------------------------------------------------

Build time:   2021-08-17 09:59:03 UTC
Revision:     a773786b58bb28710e3dc96c4d1a7063628952ad

Kotlin:       1.5.21
Groovy:       3.0.8
Ant:          Apache Ant(TM) version 1.10.9 compiled on September 27 2020
JVM:          1.8.0_312 (Temurin 25.312-b07)
OS:           Mac OS X 10.16 x86_64

JVMが 1.8.0 になっていた。ちなみに Android Studio の設定で Gradle JDK を変更しても、システムの 1.8.0 を使っているようだった。

解決

macOSの ターミナルで vim ~/.zshenv して JAVA_HOME を指定した。

export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/Contents/Home

.zshenvを保存して、Android Studio を再起動した。

Android Studio の Terminal で ./gradlew --version をした結果が以下の通り。

------------------------------------------------------------
Gradle 7.2
------------------------------------------------------------

Build time:   2021-08-17 09:59:03 UTC
Revision:     a773786b58bb28710e3dc96c4d1a7063628952ad

Kotlin:       1.5.21
Groovy:       3.0.8
Ant:          Apache Ant(TM) version 1.10.9 compiled on September 27 2020
JVM:          11.0.11 (JetBrains s.r.o. 11.0.11+0-b60-7772763)
OS:           Mac OS X 12.3.1 aarch64

無事に KMM の iosApp をiOSシミュレータで起動するようになった。