🐶
Xcodeで複数TARGETを同一のアプリバージョンに一括設定する方法
背景
マルチモジュール化により、TARGETが大量に増えた。
詳しい事情
これまでCircleCIを使ってアーカイブするときには、CircleCIのYAMLファイルから、Info.plistに設定したアプリバージョンを参照していたので、Xcode側のアプリバージョンを更新する必要がなかった。
Xcode Cloudを導入したことにより、Xcode側のアプリバージョンを設定する必要が生まれた。
しかし、マルチモジュール化して1PROJECTに対し複数TARGET(対応した例では8つ)があり、リリースのたびに複数TARGETのアプリバージョンを更新するのがとても手間。
対応
前提
1PROJECTに対し複数TARGETある。
すべてのTARGETは同一のアプリバージョンでいい。
対応内容
- PROJECTの[Build Settings]の[Marketing Version]にアプリバージョンを設定する。
- TARGETを全て選択状態にし、[Build Settings]の[Marketing Version]の行ごと削除する。
- Xcodeの見た目上、[Marketing Version]が残っているように見えるが、PROJECTの[Marketing Version]が参照されている。実態は、.xcodeprojの差分を見るとわかりやすい。
.xcodeprojの差分の例:
- MARKETING_VERSION = x.y.z;
運用
PROJECTの[Build Settings]の[Marketing Version]に新しいアプリバージョンを設定する。
Discussion