私は2組のコードを維持したくありません。私はちょうどLiteバージョンのいくつかの機能を制限し、いくつかの広告を追加する必要があります。1つのxcodeプロジェクトに基づいてLiteとフルバージョンのiPhoneアプリを作成するにはどうすればよいですか?
どうすればよいですか?
私は2組のコードを維持したくありません。私はちょうどLiteバージョンのいくつかの機能を制限し、いくつかの広告を追加する必要があります。1つのxcodeプロジェクトに基づいてLiteとフルバージョンのiPhoneアプリを作成するにはどうすればよいですか?
どうすればよいですか?
複数のターゲットを作成します。
ターゲットを右クリックして[情報を見る]を選択すると、ビルド構成を変更できます。そこから、Info.plist
ファイルを見て(名前に「Lite」を追加してアイコン/ロードイメージを変更するなど)、コンパイラフラグを設定して、#ifdef
できるような変更を行うことができます。
完全版にのみ適用できるファイルが多数ある場合は、それらを右クリックしてLiteターゲットから削除して、小さなアプリを作成することができます。
私は複数の構成など、さまざまな選択肢を試してきましたが、私は複数のターゲットに戻っていきます。私は通常、開発、アドホック、App Storeの3つを定義しており、それぞれ独自の設定があります。
Xcodeプロジェクトに既存のものを複製して追加のターゲットを追加します。
#ifdef macroIsFreeVersion
// code that will only execute in the free version here
#endif
と、この:
#ifndef macroIsFreeVersion
// code for only the paid version goes here
#endif
今、あなたがこれを行うことができ、(ビルド設定で "プリプロセッサマクロ" の下)、新たな目標に
を "macroIsFreeVersion" のようなものをマクロを定義しますバンドルID、プロビジョニング・プロファイルなどを変更する必要があります。有料版を店舗に置いたこともあります。
こんにちはウィリアム:私はXCode4にいます(これは私がこのマルチターゲット設定を行い、コンパイラフラグを使って作業しようとしている最初です)。私は "Apple LLVM compiler 2.0 - Preprocessing" - > "Preprocessor Macros"を持っています。その下で私はデバッグ、リリース、MyProjectを持っています。あなたの例に従うために、私はこれらの3つのフィールドに "macroIsFreeVersion"を入れます。 – milesmeow
はい、私は最近、情報辞書を使ってもできることを知っていますが、メソッドは[[NSBundle mainBundle] infoDictionary]です。設定によっては、これが優れた解決策である場合とそうでない場合があります。 –
ジム - 新しいターゲットを作成するときは、すべてのファイルまたは共通ではないファイルだけをコピーする必要がありますか?たとえば、私は少し異なるスクリーンファイル(.xib)を持っています...私は基本的にボタンを無効にし、ラベルにテキストを追加したいと考えています。だから私は新しいターゲットを作成するとき、元の(.xib)をコピーして、新しいターゲットのそれを変更する必要がありますか? – milesmeow
変更がマイナーなものであれば、各ターゲットのビルド設定でプリプロセッサマクロを提供し、 '#ifdef'を使ってコードを変更します。 – Jim
さらに大きな違いがある場合は、ターゲットごとにディレクトリを作成し、各フォルダにペン先のコピーを入れて、それぞれのターゲットに対して有効にします。アプリケーションバンドルが作成されると、Xcodeは元のフォルダ構造(デフォルト)を無視し、そのターゲットのファイルをフラットなディレクトリ構造にコピーします。 2つのファイルのうちの1つだけをコピーするので、正しいペンで終了します。 – Jim