0

これについてはすでに SO に多くの質問 (および回答) がありますが、この特定の点に対処しているようには見えないか、単にプロセスを理解していません。典型的な開発プロセス:

  1. 最終的なコード修正とテスト
  2. Git にコミットする
  3. commit にバージョン番号をタグ付けする
  4. Info.plist をバージョンとビルド番号で更新するスクリプトを実行する
  5. ????

Post-Archive ビルド ステップでステップ 4 を実行すると、plist が更新され、ディストリビューション アーカイブが作成されます。うまく機能しますが、例外は...

私がコミットしてタグ付けしたスナップショットは、正しいバージョン情報を含む更新された Info.plist を含むものではありません。キャッチ22です。plist が更新されるまでコミットできませんが、タグ付けされたコミットが行われるまで plist を更新できません。

ええ、変更された plist をコミットしてコミットに戻し、タグを付け直すことはできますが、それは確かに自動化されておらず、エラーが発生しやすくなっています。

たぶん、コミット前またはコミット後のフックでこれを行う必要がありますか?それとも私のプロセスが間違っていますか?

編集: この質問は、特に Xcode で Git を使用すること、およびその特定の環境でのベスト プラクティスに関するものです。質問に Xcode タグを付けるだけでは十分ではなかったと思います。

4

1 に答える 1

0

バージョン番号をリテラルとして Info.plist に保存しないでください。リポジトリにある Info.plist をテンプレートとして使用し、ビルド プロセスで、そこからビルドされたアプリに実際の Info.plist を生成します。これは実際にはデフォルトであり、ビルド中PRODUCT_NAMEEXECUTABLE_NAME、 などのビルド設定がファイルに置き換えられます。

したがって、バージョン番号は、ビルドごとにリポジトリの状態から計算する必要があります。これは、テンプレート ファイルの変更時刻が変更されていない場合でも、ビルドされた Info.plist をテンプレートから生成するように Xcode に強制する必要があるという複雑な問題を引き起こします。

リポジトリ内の Info.plist の名前を Info.plist.in などに変更し、run-script ビルド フェーズを使用して Info.plist.in から Info.plist を生成することをお勧めします。この回答で提案したように、別のターゲットを使用してそれを行うことができます。このターゲットは、アプリをビルドするターゲットの依存関係として追加されるため、Xcode は確実に最初にビルドします。Info.plist を生成するターゲットは、run-script ビルド フェーズのみを含むシェル スクリプト ターゲットになります。run-script ビルド フェーズの入力を設定しない場合、Xcode は無条件にそれを実行します。

于 2013-09-07T06:26:46.230 に答える