iOSアプリを開発していると、本番の環境とテストする環境を切り替えて開発することがありますよね。この場合、ソースコードを直接コメントアウトしたりAPIサーバーのURLを書き換えたりすると、手作業が増えたりコメントし忘れたりということが発生します。
今回は、Xcodeの設定をまとめて切り替える方法を紹介します。
xcconfigとは?
XcodeのBuild Settingsを設定できるファイルです。xcconfigを使わない場合は、XcodeのBuild Settingsからプロジェクトファイルに直接書き込むことになります。この時、Gitなどを使ってプロジェクト管理をしてるとコンフリクト解消が難しくなってしまう場合があります。xcconfigを使うことで、シンプルにパラメーターごとに値を設定できるので管理がとても簡単になります。
使い道
このxcconfigは、複数作ることで場面ごとにプロジェクト設定をまとめて切り替えることができます。開発環境、RC、リリース環境ごとに読み替えることでBundle Identierやアプリ名、APIなどを切り替えることができます。
作り方と設定方法
次は、xcconfigの作り方を説明していきます。
1. xcconfigファイルの追加
xcconfigファイルを作成するには「ファイルを追加」からconfigファイルを選択します。その時、「config」と検索するとすぐ見つけられます。今回は、app-debug.xcconfigとapp-release.xcconfigの2つを作成します。すると、以下のようなファイルが追加されます。
2. xcconfigファイルにパラメータの設定
プロジェクトに設定するパラメーターを追加していきましょう。今回は、app-debug.xcconfigに追記していきます。以下のパラメータを追加します
/* アプリ名 */ PRODUCT_NAME=FeedApp-Dev /* Bundle Identifier */ PRODUCT_BUNDLE_IDENTIFIER=com.sample.feed-dev /* ビルド時のフラグ 開発環境なので、DEBUGプロパティをセット */ OTHER_SWIFT_FLAGS = $(inherited) "-D" "DEBUG" /* 仕様するInfo.plistのファイルパスを指定*/ INFOPLIST_FILE=rss-app-sample/Info.plist
3. パラメータを読み込む様に設定
次にプロジェクトにconfigを読み込むように設定します。ビルドターゲットの上にあるプロジェクトを選択した後、configrationsからDebugとReleaseに先ほど作ったファイルに指定します。
4. パラメータを読み込む様に設定
xcconfigを読み込むように設定したら、プロジェクトに反映するように設定します。こちらは、ビルドターゲットを選択して、Build Settingsタブから設定します。設定する項目は、Bundle IdentifierとProduct Nameです。
5. ビルド
5. これで、プロジェクトに反映されるようになります。ビルドして見ましょう。すると、以下のようにアプリ名に反映されたアプリがビルドされます。Generalタブで表示される値もxcconfigで設定した値になっています。
スキーマで簡単に切り替える
次は、開発ビルド向けのスキーマを作っていきます。
1. Schemeを編集する
上部のナビゲーション内にあるビルドボタンの左側にスキーマを選択できるところがあるので、そこをクリックしてEdit Schemaを選択します。
2. 本番環境用のSchemeを設定
すると次のような画面が出てくるので、Build ConfigurationをDebugにReleaseにしておきます。設定した後は、下にあるDuplicate Schemeをクリックして複製します。このBuild Configurationを設定することで、先ほどxcconfigで設定したプロパティを切り替えることができます。
3. テスト環境用のSchemeを設定
複製したスキーマの設定をしていきます。複製したものは、開発向けのスキーマにしたいのでxxxx-Devという名前にしましょう。Build ConfigurationをDebugにします。
設定が終わったらCloseを押して閉じます。すると、スキーマ選択で開発用とリリース用のビルドが選択できる様になっています。
3. テスト環境と本番環境を切り替えてビルド
最後にそれぞれのSchemeでビルドして見ましょう。すると、以下の様にスキーマを切り替えることで各開発フェーズのアプリをビルドできる様になります。
まとめ
iOSアプリケーションを開発するときは、開発フェーズごとにビルド設定を切り替えられる様すると直接コード書き換えてデバッグするといったことを避けられ開発が捗る様になります。この様なテクニックは、iOSアプリだけでなく他の開発環境でも利用されているものなので勉強している方は覚えておくと今後役にたつと思います。