さまざまな顧客向けにさまざまなビルドを持つ汎用アプリを作成しています。アプリは各顧客に対して 99.5% 同一であり、それぞれの違いは、顧客固有の画像、テキスト、アプリ アイコンなどでブランド化されていることです。
明らかに、これは次のようなフラグを使用して実行できます。
#if defined (CUSTOMER_A)
NSString* text = @"Text for customer A";
UIImage *image = [UIImage imageNamed:@"customerAImage"];
#elseif defined (CUSTOMER_B)
NSString* text = @"Text for customer B";
UIImage *image = [UIImage imageNamed:@"customerBImage"];
しかし、明らかに私はこれを避けたいと思っています:
NSString* text = @"Text";
UIImage *image = [UIImage imageNamed:@"image"];
(テキストはローカライズ可能であるため、最終バージョンでは NSLocalizedString を使用します)。
プロジェクトを多数の静的ライブラリと共にワークスペースに配置する方法が考えられるのではないかと考えていました。それぞれのライブラリには顧客ごとに特定のテキストと画像が含まれており、さまざまなスキームを使用してさまざまなビルドを作成します。したがって、スキーム A は、たとえばメイン プロジェクトと静的ライブラリ A でビルドされたターゲットを作成します。
私は小さな概念実証から始めましたが、先に進む前に、これが実現可能で合理的なアプローチであるか、またはより良い代替手段があるかどうかを確認したいと思います。実行可能である場合、いくつかの疑問が頭に浮かびます。
メイン プロジェクトのコードから静的ライブラリの画像にアクセスするにはどうすればよいですか? ライブラリのコンテンツにアクセスするには、バンドルを作成する必要がありますか?これはどのように行われますか?
使用されているスキームに応じて、アプリケーションのデスクトップとマーケットプレイスのアイコンを変更することはできますか?
スキームごとに使用する配布証明書などの異なるセットを指定することは可能ですか?
静的ライブラリにローカライズされたバリアントを含めることができないというのは本当ですか?
これは iOS 用であるため、フレームワークを使用することはできません。
フィードバックをお寄せいただきありがとうございます。
(PS ビルド システムは Jenkins を使用して自動化されます)。