Xcode の Project エディタで環境ごとのビルド設定をする方法
システム開発をしていると、プログラムを QA 環境や本番環境にデプロイする際に、環境に応じて違う設定を使いたいことがありますよね。
ここでは、Xcode の Project エディタで環境ごとのビルド設定をする方法をご説明します。
Build Configuration と Scheme は追加済の前提ですすめますので、まだの方は「Xcode で環境ごとの設定を管理する方法」の目次に戻って追加・設定してください。
Xcode の ビルド設定の優先順位
Xcode でビルドする際、複数箇所にビルドの設定をすることができるので、値が使われる優先順位が決まっています。
優先順位は高い順で次のようになっています。
- Target レベルの Build Settings
- Target にマップされた config ファイル
- Project レベルの Build Settings
- Project にマップされた config ファイル
- プラットフォームのデフォルト
後ほど、環境ごとの Target レベルのビルド設定をする方法と、config ファイルによる値の設定の方法をご紹介します。
最終的にどの設定の値が有効になるかは、プロジェクトエディタの以下の場所で確認できます。
ここで Resolved に表示されている値が、最終的にこのビルド設定のキーに対応して使われる値です。
また、すこしややこしいですが、ここで設定されていても、そのビルド設定が最終的に使われているかどうかは別の話になります。
例えば、ここで Target レベルの Build Settings の Product Bundle Identifer が設定されていても、info.plist で Bundle identifier の値が $(PRODUCT_BUNDLE_IDENTIFIER) から他のものに変更されている時はそちらが使われます。
あくまでも PRODUCT_BUNDLE_IDENTIFIER というキーにたいして、Resolved の値が使われる、という感じです。
Xcode の Project エディタで環境ごとのビルド設定をする
では、Project エディタで Target レベルで環境ごとの値を設定してみましょう。
例えば、Bundle ID を環境ごとに違う値を設定してみます。
プロジェクトエディタで PROJECT のプロジェクト名をクリックし、Build Settings タブを選択し Bundle で検索します。
Project Bundle Identifer の左側をクリックすると Build Configuration ごとの値が出てきます。
Development 環境用の configuration の Bundle ID には .dev を、QA 環境用の configuration には .qa を後ろに追加しました。
これで、info.plist は変更されていない前提で、build schema を変更して実行をすると、環境ごとに違う Bundle ID が使われ、同じデバイスに環境ごとのアプリをインストールできるようになります。
以上、Xcode の Project エディタで環境ごとのビルド設定をする方法をご説明しました。