無料版と有料版を一つのXcodeプロジェクトで作る

参考:http://www.func09.com/wordpress/archives/859
この記事のXcode 4.6.2対応版です。一つのプロジェクトから複数種類のバイナリを作成します。

  1. TARGETSを追加する
  2. プリプロセッサを追加する
  3. ファイル名などを修正する

TARGETSを追加する


プロジェクトを選択肢、TARGETのコンテキストメニューからDuplicateを選びます。iPad向けにするのかそのままにするのか聞かれますが、有料・無料の作り分けなのでここはそのままで。ついでにTARGETの名前も〜COPYから変更しておきましょう。

プリプロセッサを追加する

TARGETを選択し、Build Settingを開きましょう。下の方にAPPLE LVVM compiler 4.2 - Preprocessingがありますので、Preprocesser Macros Not Used In Precompiled Headersに有料/無料を切り替えるマクロを設定します。

ここではFREE_VERSIONが0か1かで切り替えるようにしています。

ファイル名などを修正する


同じくBuild Settingからinfo.plistのファイル名(Info.plist Name)とプロダクト名(Product Name)を編集します。プロダクト名を編集することでBundle Identifierに反映されます。
次にProjectNavigatorからinfo.plistのファイル名をBuild Settingで設定したものに直します。


あとはコードで分岐するだけです。

#if FREE_VERSION == 1
    _label.text= @"Hello Free App";
#else
    _label.text= @"Hello Paid App";
#endif

動作させるときはsimulator/実機を選択する箇所で、どちらのターゲットを対象にするか選択します。Manage Schemesで名前を揃えておくと気持ちよいですね。