ナクナイ

勉強用の備忘録

[Xcode] Debug, Release 以外の環境を追加し、各環境ごとに処理を変更

cocos2d-x を使用したアプリ開発で、API 通信先を環境ごとによって変えたい場面に直面した。
開発環境、ステージング(スタブ)環境、リリース環境と分けたかったのだが、調べたところ Xcode のデフォルトではデバッグ環境と本番環境しか用意されていないらしい。


そこで自分でステージング環境を追加したので、その手順のメモ。
Xcode のバージョンは Version 5.1 (5B130a) です。


Build Settings にステージング環境を追加
  • Project Navigator の最上部にあるプロジェクトファイルを選択
  • 「PROJECT」ファイルのアイコンを選択し、「Info」のタブを選択
  • 「Configuration」内の + ボタンを押下し任意の名前で追加。この例では「Staging」として追加

f:id:tamulapin:20140611164807j:plain


追加したステージング環境に定義を追加

環境によって処理内容を変えたいので、ステージング環境であることを判別できる定義を追加します。

  • Project Navigator の最上部にあるプロジェクトファイルを選択
  • 「TARGETS」ファイルのアイコンを選択し、「Build Settings」のタブを選択
  • 「Preprocessor Macros」内に先ほど設定した「Staging」の部分をダブルクリックし、任意の変数を追加する。この例では「COCOS2D_STAGING=1」を追加

f:id:tamulapin:20140611164631j:plain


試してみる

API 接続先を、3 環境によって切り替えるコードを書く
※ COCOS2D_DEBUG=1 はもともと定義済みでした

#ifdef COCOS2D_DEBUG
    #define API_DOMAIN "http://debug_nari.com"
#elif COCOS2D_STAGING
    #define API_DOMAIN "http://staging_desu.com"
#else
    #define API_DOMAIN "http://honban_de_gozaru.com"
#endif


接続先を変更して実行してみたところ、問題なく API_DOMAIN の値が切り替えられていることを確認!

ちなみに接続先の切り替えは、
command + shift + < で、「Run [プロジェクト名]」を選択し、「Info」タブの「Build Configuration」のプルダウンで選択可能


参考
[Xcode] Build Settingsで、Debug, Release以外の設定を追加したい。 | Scenee's blog

XCodeでDebug時とRelease時にLog出力on/off切り替え | memo.donburiburi.com