Sponsor Link
環境&対象
- macOS Monterery beta 5
- Xcode 13 beta5
fastlane/snapshot
コマンド1つで、指定したデバイスのスナップショットを作成してくれるので、非常に便利です。
非常に便利なのですが、ブラックボックス的に使っていると、うまく動かなくなった時に、どこが原因なのか探すのが大変です。
特に、Xcode をバージョンアップしたりするとハマりがちです。
今回は、Xcode12 と Xcode13 を共存していることを気にしすぎてハマりました。
期待するシミュレータが使用されない
スナップショットは、AppStore が要求する 4機種 で撮ることにしています。
[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 に記述追加したりと さまよいました。)
当初、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 ターゲットを持っていました。
アプリの Deployment とは別に、テストの Deployment を指定できるために、fastlane/snapshot ではこの値が参照されているようです。
# デフォルトでは、アプリの Deployment と同じ値を持つと思われます。
この値を使用したい iOS バージョンにしたことで、snapshot でも 期待する OS バージョンのシミュレータが使用されるようになりました。
まとめ:fastlane/snapshot で期待する simulator が選択されない時に確認すること
- ターゲットアプリの Deployment を確認する
- fastlane/snapshot ターゲットの Deployment を確認する
説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。
Sponsor Link