2011-09-13 22 views
11

私は現在、アプリケーションストアにあるiPhoneアプリケーションを持っています。効果的に全く同じアプリケーションを作成したいのですが、無料で広告を掲載しています。Xcodeプロジェクトにターゲットを追加する

私の計画は、効果的にプロジェクトをコピーし、新しいプロジェクトを作成し、コードに広告を追加し、別のアプリとしてリリースすることでした。しかし、誰かが、実行時に2つのバイナリを提供することで、既存のアプリケーションに追加のターゲットを追加することが最善の解決策であると言いました。

私にとっては良い解決策のようですが、新しいターゲットに広告を組み込むためにコードを変更して元のままにしておく方法について少し混乱していますか?

答えて

7

私は古いものの、私はフルバージョンのターゲットに影響を与える変更でそれを実行していないことができました確認して、ターゲットとpリストを重複Xcodeの4のために基本的に同じであった。thisチュートリアルに従っ

次に、異なる.xibファイルを複製しました。プロジェクトの設定を見ると、どこにリソースが含まれるかを選択できるリストがあります。ライトバージョンにはライトバージョンのxibを、フルバージョンにはフルバージョンをそれぞれ含めます。次に、他のものに影響を与えることなくそれぞれを編集することができます。

アイコンと画像は同じように変更できます。ライトバージョンのアイコンセットやその他のイメージセットを作成し、フルバージョンのイメージではなくライトターゲットのリソース設定にライトアイコンを追加するだけです。

また、いくつかのプリプロセッサマクロを作成することもできます。ビルドタブでは、の場合はすべての前処理オプション(デバッグ、配布、リリース)のLITE_VERSION(または必要なものは何でも構いません)と呼ばれるマクロを探します。

これにより、同じ.hと.mファイルに異なるコードを追加することができます。単に

#ifdef LITE_VERSION 
// Lite version only code here 
#endif 

を使用して2つを区切ります。 #ifndef LITE_VERSIONを使用して、フルバージョンにのみコードを追加することもできます。

これだけです!上記のすべての手順を完了したら、ライトバージョンの.xibファイルを編集し、コードをライト版またはフルバージョンのみに入れ、それぞれに別々のイメージとアイコンを用意する必要があります。

+0

ありがとうございます。私はそのチュートリアルに従います。感謝。 –

+1

Xcode 4では、さまざまなことが表示されています。残念ながら、インターネット上のすべての記事やブログ記事は、Xcode3を参照しているようです。 Xcode 4の下では、info.plistファイルはターゲットを複製するときに自動的には複製されません。ターゲットごとに1つずつ、2つの別々の作業plistファイルを作成する方法を見つけることはできません。 –

+0

私はそれを自動的に行う方法を理解できませんでしたが、最初のものをコピーして名前を変更するのはそれほど難しいことではありません。 –

2

XenElementの回答が正しいです。しかし、あなたはそれを行うベストプラクティスを見なければなりません。ターゲットを確認するには、識別子クラスが必要です。コード内のどこにでもマクロを使用すると、あなたや他の開発者にとっても良いとは思われません。 this little blog postでは、そのような種類の識別子クラスを作成し、xcodeのターゲットに関するベストプラクティスを学ぶ方法を理解できます。

0

私はこれに続いてJust2us: How to create multiple targets for Xcode iPhone Projectsチュートリアルです。

私はStuの手がかりを使ってステップ3を変更し、有料バージョンで明示的にFULL_VERSIONを設定することを決めました。(したがって、誤ってフルバージョンをリリースする)マクロプリプロセッサとして定義され、誤って持っていないの懸念をLITE_VERSION対処するため

」、私はヘッダファイルにコードのこの小さなスニペットを置く(それだけでどこかにする必要がありますコードベース、まさにそれが、すべての構成に共通であることを確認してください)」:

#ifndef LITE_VERSION 
    #ifndef FULL_VERSION 
     #error You probably forgot to specify if this is the Lite or Full version of the app 
    #endif 
#endif 

PS:私はAppDelegate内の#import直後上記のコードを書きました。

関連する問題