8

アプリの「無料」バージョンと「有料」バージョンがあり、両方のビルド番号を同時に自動インクリメントしたいと考えています。私がしていることについて。これらは本質的に同じコードベースです。特定のもののロックを解除するために、「有料」バージョンで定義されたプリプロセッサ ディレクティブを持つ 2 つのターゲットがあります。

この質問のコードを使用しています: XCode でのバージョンとビルド

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

$INFOPLIST_FILE次の行に沿って、もう一方へのパスを指定する 2 行を追加するだけでよいと思います。

 "Print CFBundleVersion" "NEW_PATH/$INFOPLIST_FILE"

それをインクリメントしますが、一方のターゲットの Plist へのパスを別のターゲットのビルド中に取得するにはどうすればよいですか?

4

4 に答える 4

5

私はそれを考え出した。SRCROOT変数を使用する必要があります。これにより、プロジェクトのベース ディレクトリが得られます。PlistBuddy -cそこから、使用する info.plist ファイルの場所を手動で指定し、そのパスでコマンドを実行する必要があります。

最初に「無料」バージョンをインクリメントし、次に「有料」バージョンをインクリメントする例を次に示します。

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

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$SRCROOT/Pro-Info.plist")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$SRCROOT/Pro-Info.plist"

ターゲットごとにスクリプトを逆にする必要があるため$INFOPLIST_FILE、現在のターゲットの変数が使用され、他のターゲットの場所が指定されます。これらをカスタム変数に保存するか、$INFOPLIST_FILE変数をまったく使用する代わりにそれぞれを指定することもできますが、基本的にはすべて同じことを行います。

于 2013-07-28T19:16:50.270 に答える