1 つのアプリを生成する比較的大規模な Xcode プロジェクトがあります。ただし、このアプリの詳細なカスタマイズとブランディングを必要とする多くのクライアント/顧客がいます。これらの構成には、さまざまなグラフィックス、いくつかの異なるインターフェイスと実装、そしておそらく最も重要な .xcconfig ファイルが含まれます。
私の Xcode プロジェクトには、ディスク上の特定のクライアントのカスタマイズ フォルダーを指す専用のグループがあるため、Xcode プロジェクトを開いてビルドすると、現在のクライアントのカスタマイズを含む単一のアプリのビルドが取得されます。別のクライアントに切り替えるには、そのグループが指すディスク上の場所を変更します。(また、プロジェクトの情報ペインで xcconfig の「ベース」設定を変更して元に戻し、xcconfig の完全な継承をリロードします。1 つまたは複数の xcconfig ファイルを含むグループを変更するだけでは、これはリロードされません!) + クライアント。別のクライアント用にアプリをビルドし、xcconfig が正しいことを確認する必要があるたびに、このフォルダーを切り替えるのは少し面倒ですが、うまくいきます。
現在、コマンドラインを介してビルドを自動化している最中で、問題が発生しています。前述の Xcode グループを別のカスタマイズ フォルダーにポイントする手っ取り早い解決策は、ProjectName.xcodeproj/project.pbxproj
ファイルをコピーして、ProjectName.xcodeproj/project-template.pbxproj
このファイル内にプレースホルダーを配置することでした。これを grep して、目的のカスタマイズ フォルダーの名前とパスに置き換えることができます。次に、修正した project-template.pbxproj で project.pbxproj を一時的に上書きし、ビルドして正しいアプリを取得します。
お気づきかもしれませんが、project.pbxproj は複製および変更されているため、開発者がオリジナルを変更し、テンプレートも更新するのを忘れると、同期が取れなくなります。それに、とにかく、この方法で pbxproj ファイルをいじるべきではありません。これは Xcode のプライベートなものです。
では、プロジェクト グループ レベルではなく、おそらくスクリプトまたは環境変数を使用して、ビルド フェーズ中にリソース、コード、および構成ファイルでいっぱいのフォルダーについて Xcode に伝えるより良い方法はありますか? 最も複雑なのは xcconfig チェーンのようです。各クライアントには、単一のアプリのデバッグ、開発、および配布の xcconfig ファイルから継承する独自の xcconfig ファイルがあるためです。
この質問が長くて申し訳ありませんが、少し複雑です! どんな提案でも大歓迎です!