iOSアプリを開発していると、一つのアプリを環境毎にインストールしておきたい場合がありました。
最初の対応方法としては、環境毎に以下キャプチャの赤枠の設定をいちいち変更してインストールしていました。
しかしこれだと、
- ビルドする度に環境に合わせて設定を変更するのでとっても面倒
- 頻繁に手動で変更していると設定を間違えるリスクがある
があってストレスが溜まり、精神衛生上、良くありませんでした。
私は基本的に保守的な人間(エンジニアとしては推奨されません)なので、一度、方法を確立するとあまり変えたりしないのですが、これはさすがに変えないとやってられねぇと。
そこで調べた結果、半自動で環境に合わせてビルドする方法がありました。
そこで今回は自分もやった方法をここに残そうと思います。
- 各環境(開発、ステージング、本番)を設定しよう
- 開発と本番はdebugとReleaseがあるので、とりあえずステージングのを作ります
- プロジェクトファイル > PROJECT > ConfigurationsにあるプラスボタンからDebugの複製を作成
- スキーマを環境毎に用意しよう
- 開発と本番はあるので、とりあえずステージングのを作ります
- スキーマ(図の左上赤枠)部分から「New scheme...」から作成
- 「Debug executable」はデバック実行するかどうか
-
アプリ表示名とバンドルIDを環境毎に変わるように独自設定を定義しよう
- サンプルではアプリ表示名とバンドルIDは以下のようにします。
- 開発: Dev各環境 / com.labo.eachEnvironment.dev
- ステージング: Stg各環境 / com.labo.eachEnvironment.stg
- 本番: 各環境 / com.labo.eachEnvironment
- プロジェクトファイル > TARGET > Build Settingsにあるプラスボタンから「Add User-Defined Setting」を選択する
- そして以下の図の赤枠部分を定義する(名前は任意)
- サンプルではアプリ表示名とバンドルIDは以下のようにします。
-
定義した値を設定しよう
- アプリ名表示は、「Bundle display name」
${DISPLAY_NAME_PREFIX}各環境
- Bundle Identifierは、「Bundle identifier」
$(PRODUCT_BUNDLE_IDENTIFIER)${BUNDLE_IDENTIFIER_SUFFIX}
- アプリ名表示は、「Bundle display name」
以上、こうすることで以下のように環境毎にアプリを共存させることができます。