私はこれをプロジェクトのビルドフェーズとして使用しています。
export PLISTBUDDY="/usr/libexec/PlistBuddy"
export INFO="${CODESIGNING_FOLDER_PATH}/Info.plist"
export RXREVISION=`git describe --tags | perl -pi -E "s/[^-]+\-([^-]+).*/\1/"`
export RXVERSION=`git describe --tags | perl -pi -E "s/([^-]+)\-[^-]+.*/\1/"`
$PLISTBUDDY $INFO -c "add CFBundleVersion string $RXREVISION"
$PLISTBUDDY $INFO -c "set :CFBundleVersion $RXREVISION"
$PLISTBUDDY $INFO -c "add CFBundleShortVersionString string $RXVERSION"
$PLISTBUDDY $INFO -c "set :CFBundleShortVersionString $RXVERSION"
これは、ビルドされたアプリケーションのInfo.plistのビルドリビジョンを更新するために完全に機能し、ソースツリーを変更しません。
更新バージョンスクリプトをリンクフェーズの最後と前の両方に配置してみました。いずれにせよ、ビルドされたアプリケーションへの変更に影響を与える可能性がありますが、dSYMは元のソースツリーからビルドされます。
ビルドされたアプリとビルドされたdSYMの間のバージョン番号のこの不一致は問題です。(HockeyAppはここでエラーをスローします。)
ソースツリーのInfo.plistを更新する場合は、変更に対処する必要があります。それは私が見ることができる2つのオプションを私に残します:
- Info.plistをソース管理下に置き、スクリプトに直接編集させます。ただし、これは、ビルドごとに変更をチェックインする必要があることを意味します。
- Info.plistを無視し、スクリプトに直接編集させます。しかし、Info.plistには、ソース管理下で必要なものが他にもたくさんあります。
ソースツリーのInfo.plistを処理してビルドごとに変更することなく、dSYMのバージョンを自動的に更新するにはどうすればよいですか?
また、接線方向:dSYMでバージョンを確認するにはどうすればよいですか?