10

ここで答えを実装しようとしています:

ビルド番号をインクリメントするより良い方法は?

しかし、それを適切に機能させることはできません。「plist にビルド番号がありません」というエラー 2 で失敗します

しかし、ビルド番号を plist に入れると、スクリプトは次のビルドでそれをクリアし、同じことが何度も繰り返されます。

何か案は?

4

3 に答える 3

26

ビルド番号をインクリメントする方法は次のとおりです。

[ターゲット] > [概要] タブで、初期ビルド # を設定します。 ここに画像の説明を入力

次に、このスクリプトを使用してビルド番号を増やします。

#!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
buildNumber=$(printf "%04d" $buildNumber)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

または、16 進数のビルド番号が必要な場合:

#!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$((0x$buildNumber))
buildNumber=$(($buildNumber + 1))
buildNumber=$(printf "%04X" $buildNumber)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
于 2012-09-11T13:01:14.390 に答える
3

私の解決策は次のとおりです。

#!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(echo $buildNumber | sed 's/0*//')
buildNumber=$(($buildNumber + 1))
buildNumber=$(printf "%04d" $buildNumber)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

sed を使用して先頭のゼロを削除し、値をインクリメントして、4 桁のゼロが埋め込まれた数値を使用して plist ファイルに出力します。

于 2013-07-03T10:44:15.533 に答える
0

また、Jenkinsを使用する場合は、Jenkinsビルド番号を使用できます

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "$INFOPLIST_FILE";
于 2012-11-28T01:54:54.390 に答える