[Fastlane] Snapshot で期待するシミュレータが使用されない時に確認すること

fastlane/snapshot で期待する simulator が選択されない時に確認すること

環境&対象

以下の環境で動作確認を行なっています。

  • macOS Monterery beta 5
  • Xcode 13 beta5

fastlane/snapshot

コマンド1つで、指定したデバイスのスナップショットを作成してくれるので、非常に便利です。

非常に便利なのですが、ブラックボックス的に使っていると、うまく動かなくなった時に、どこが原因なのか探すのが大変です。

特に、Xcode をバージョンアップしたりするとハマりがちです。

今回は、Xcode12 と Xcode13 を共存していることを気にしすぎてハマりました。

期待するシミュレータが使用されない

スナップショットは、AppStore が要求する 4機種 で撮ることにしています。

[AppStore] AppStore 登録用 スクリーンショット に使うシミュレータについて (2021.04 版)[AppStore] AppStore 登録用 スクリーンショット に使うシミュレータについて (2021.04 版)

普段通り、fastlane/snapshot を実行すると、以下のメッセージが表示され、うまくいきません。


[11:06:00]: ▸ xcodebuild: error: Unable to find a destination matching the provided destination specifier:
[11:06:00]: ▸ 		{ platform:iOS Simulator, OS:14.4, name:iPhone 8 Plus 14.4 }

当初は、並行してインストールしている Xcode13 ベータ版が影響しているかとも考えたのですが、結果的には、影響はないようでした。

使用するシミュレータのバージョンはどのように決まる?

fastlane/snapshot では使用するシミュレータのバージョンは、どのように決まるのでしょうか?

ターゲットの Deploy

基本は、Xcode プロジェクトが持っている ターゲットの Deployment です。(これに気づくまで、Fastfile に記述追加したりと さまよいました。)

AppDeployment
AppDeployment

当初、Deployment は iOS 14.5 となっていました。14.5 の シミュレータをインストールしていなかったために、15.0 が選択されていました。

自分は、iOS14.4 指定しているシミュレータの名前を iPhone 8 Plus 14.4 として作っていたのですが、OS バージョンが整合しない(14.5 向けなので、14.4 は選択できない)ために 選択されませんでした。

ということで、Deployment を 14.4 に修正して、再度 fastlane を実行します・・・が、別のシミュレータを探す挙動は変わりませんでした。

テストターゲットの Deployment

Xcode プロジェクトは、テストにも Deployment ターゲットを持っていました。

TestDeployment
TestDeployment

アプリの Deployment とは別に、テストの Deployment を指定できるために、fastlane/snapshot ではこの値が参照されているようです。

# デフォルトでは、アプリの Deployment と同じ値を持つと思われます。

この値を使用したい iOS バージョンにしたことで、snapshot でも 期待する OS バージョンのシミュレータが使用されるようになりました。

まとめ:fastlane/snapshot で期待する simulator が選択されない時に確認すること

fastlane/snapshot で期待する simulator が選択されない時に確認すること
  • ターゲットアプリの Deployment を確認する
  • fastlane/snapshot ターゲットの Deployment を確認する

説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です