🐶

Xcodeで複数TARGETを同一のアプリバージョンに一括設定する方法

2024/04/19に公開

背景

マルチモジュール化により、TARGETが大量に増えた。

詳しい事情

これまでCircleCIを使ってアーカイブするときには、CircleCIのYAMLファイルから、Info.plistに設定したアプリバージョンを参照していたので、Xcode側のアプリバージョンを更新する必要がなかった。
Xcode Cloudを導入したことにより、Xcode側のアプリバージョンを設定する必要が生まれた。
しかし、マルチモジュール化して1PROJECTに対し複数TARGET(対応した例では8つ)があり、リリースのたびに複数TARGETのアプリバージョンを更新するのがとても手間。

対応

前提

1PROJECTに対し複数TARGETある。
すべてのTARGETは同一のアプリバージョンでいい。

対応内容

  1. PROJECTの[Build Settings]の[Marketing Version]にアプリバージョンを設定する。
  2. TARGETを全て選択状態にし、[Build Settings]の[Marketing Version]の行ごと削除する。
  3. Xcodeの見た目上、[Marketing Version]が残っているように見えるが、PROJECTの[Marketing Version]が参照されている。実態は、.xcodeprojの差分を見るとわかりやすい。

.xcodeprojの差分の例:

- MARKETING_VERSION = x.y.z;

運用

PROJECTの[Build Settings]の[Marketing Version]に新しいアプリバージョンを設定する。

Discussion