ご存知のように、メモリは時々失敗します。 ここに、プロジェクトのビルド番号を自動的に設定するためのシンプルで効果的な奇跡のレシピがあります。
簡単な説明を含む完成したプロジェクトは、 github.github.com / eshurakov / XcodeAutoBundleVersionで入手できます。
アプリケーションのバージョンをインストールするには、開発者には2つの変数があります。
| アプリストアに表示されるマーケティングバージョン 。 これは、ドットで区切られた3つの数字で構成される文字列です。 リリースされたアプリケーションの反復を示します。 このバージョンは常に手動で変更します。 |
CFBundleVersion | ビルド番号 これは、ドットで区切られた1つ以上の数字で構成される単調に増加する文字列です。 リリース済みアプリケーションまたは開発アプリケーションの反復を示します。 |
詳細については、Appleが提供するドキュメントを参照してください: developer.apple.com/library/mac/#documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
開発中はすべてバージョン管理システムを使用するため、明らかな解決策はビルド番号として最新のリビジョン番号を使用することです。
- SVNユーザーの場合、すべてが単純で、リビジョン番号はクリアテキストです。
- GITユーザーの場合、すべてがそれほど単純ではありません。ビルド番号の形式に制限があるため、最後のコミットのハッシュを使用できません。 しかし、方法があります! プロジェクトに歴史が巻き戻されていない安定したブランチがあると仮定して、このブランチのコミット数をビルド番号として使用します。
ビルド番号:
> git rev-list master | wc -l > 43
ビルド番号によるコミットのハッシュ:
> git rev-list --abbrev-commit --reverse master | sed -n '43 p' > 5a09ebc
- 残念ながら、他のバージョン管理システムのユーザーについては気にしませんでした:)
6つの簡単な手順でプロジェクトをセットアップします。
- スクリプトをプロジェクトフォルダーに保存します。 このスクリプトはビルド番号を計算し、転送されたファイルに書き込みます。
- プロジェクトで、Aggregateタイプの新しいターゲットを作成します。 「バージョン」という名前を付けました。 ビルドフェーズで、スクリプトを呼び出す場所からスクリプト実行フェーズを追加します。
GIT_BRANCH="master" PREFIX="XC_" /bin/sh "${PROJECT_DIR}/Version.sh" "${PROJECT_DIR}/Version.h"
スクリプトで使用される環境変数:
プレフィックス
生成された定数のプレフィックスは存在しない場合があります。
GIT_BRANCH
ビルド番号が考慮されるgitリポジトリブランチ。 デフォルトは「マスター」です。
PROJECT_DIR
プロジェクトフォルダーへのパス。 Xcodeからスクリプトを実行するとき、この変数はすでに設定されています。
結果のヘッダーファイルの例:
#define XC_BUILD_NUMBER 7 #define XC_BUILD_HASH @"c2acb9b"
コンパイル時にInfo.plistプロジェクトファイルを生成するために使用します。 また、プロジェクトに接続し、独自の裁量で使用することもできます。たとえば、「アプリケーションについて」画面にコミットのハッシュを表示します。
- メインターゲットのビルド設定を変更する:
Info.plistファイルの前処理
はい
Info.plistプリプロセッサプレフィックスファイル
Version.h
- Info.plistで、
CFBundleVersion
の値をXC_BUILD_NUMBER
に変更します
- メインターゲットへの依存関係として、新しく作成した集計ターゲットを追加します。
- Version.hファイルは、バージョン管理システムの無視シートに追加されます。
これで、プロジェクトのビルドごとに、Version.hファイルが更新され、Info.plistが更新されます。
githubのテストプロジェクト: github.com/eshurakov/XcodeAutoBundleVersion