0
0

Compose Multiplatform を Xcode Cloud で使う際にハマったポイント

Posted at

Xcode Cloud で Compose Multiplatform を使用した iOS アプリのビルドを行う際にハマったことを共有したいと思います。

Xcode Cloud 環境

  • Xcode 15.4
  • macOS Sonoma 14.5

Java のインストールが必要 :coffee:

Gradle で Kotlin のコードをビルドするために Java が必要となりますが、mac には Java が入っていないのでインストールする必要があります。

Xcode Cloud で Git リポジトリをクローンした後に実行させたい処理を記載できる ci_post_clone.sh を使用して Java をインストールします。

ci_post_clone.sh
#!/bin/zsh

brew install openjdk@17

ここらへんに関しては DroidKaigi2022 のリポジトリを参考にさせてもらいました 🙏

ちなみに、CI の度に Java をインストールするのは時間がかかりそうですが、何回か試した感じ 2分30秒 ぐらいなので許容範囲かなと思います。

インストールが完了した後は PATH を通して完了、と思いきや、ここからがハマりました…。

Java が見つからない ~ The operation couldn’t be completed. Unable to locate a Java Runtime. ~ :innocent:

DroidKaigi のリポジトリを参考に ci_pre_xcodebuild.sh を使用し PATH を通す処理を追加しましたが、xcodebuild が実行されると Java が見つからないエラーが出続けました。

ci_pre_xcodebuild.sh
#!/bin/zsh

export PATH="/usr/local/opt/openjdk@17/bin:$PATH"

# これもダメだった↓
# echo 'export PATH="/usr/local/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc
# source ~/.zshrc

Compile Kotlin Framework の実行時に Java が見つからないエラー

スクリーンショット 2024-06-15 午前5.47.12.png

Run custom shell script 'Compile Kotlin Framework'

The operation couldn’t be completed. Unable to locate a Java Runtime.

Please visit http://www.java.com for information on installing Java.

Command PhaseScriptExecution failed with a nonzero exit code

原因 :bomb:

色々と試してみると、 ci_post_clone.shci_pre_xcodebuild.sh で PATH を通したりしても、 xcodebuild には引き継がれない っぽいことが判明。

同じような内容の投稿が Stack Overflow にもありました。

解決策と最終的な記述 :white_check_mark:

xcodebuild のタイミングで PATH が通っていれば良いと考え、Kotlin のコードをビルドする Compile Kotlin Framework で PATH が通るように対応しました。

1: ci_post_clone.sh で Java をインストールし、 PATH の記述を ~/.zshrc に追加

ci_post_clone.sh
#!/bin/zsh
brew install openjdk@17
echo 'export PATH="/usr/local/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc

2: Compile Kotlin Frameworksource ~/.zshrc を呼ぶ

スクリーンショット_2024-06-14_午前8_01_48.png

これで Java が見つかるようになり、ビルドできるようになりました。

おわりに

結果としては非常にシンプルになりましたが、ここに到達するまでにだいぶハマりました…

結局自分は20回目でやっとビルドが成功したので、この記事の内容が誰かの役に立てば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0