ここではおそらく単純なものが欠けています。XCode 4.4 でビルド番号を自動インクリメントしようとしています (TestFlight 展開の準備のため)。ターゲット上で実行され、ビルドごとに info.plist ファイルを正常に更新するシェル スクリプトが動作しています。アーカイブ用の私のビルド構成は「Ad-Hoc」という名前です。
スクリプトは次のとおりです。
if [ $CONFIGURATION == Ad-Hoc ]; then
echo "Ad-Hoc build. Bumping build#..."
plist=${PROJECT_DIR}/${INFOPLIST_FILE}
buildnum=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${plist}")
if [[ "${buildnum}" == "" ]]; then
echo "No build number in $plist"
exit 2
fi
buildnum=$(expr $buildnum + 1)
/usr/libexec/Plistbuddy -c "Set CFBundleVersion $buildnum" "${plist}"
echo "Bumped build number to $buildnum"
else
echo $CONFIGURATION " build - Not bumping build number."
fi
このスクリプトは plist ファイルを適切に更新し、アーカイブするたびに XCode に反映されます。問題は、アーカイブ プロセスから生成される .ipa ファイルに以前のビルド番号が表示されていることです。次の解決策を試しましたが、成功しませんでした。
- ビルド前にクリーンアップ
- ビルド前にビルド フォルダーを消去する
- ビルド フェーズのターゲット依存関係ステップの直後にスクリプト実行フェーズを移動します。
- プレアクションとして私のスキームでスクリプトを実行アクションとしてスクリプトを追加する
何をしても、ビルド ログを見ると、info.plist ファイルが最初のステップの 1 つとして処理されていることがわかります。これは常に、スクリプトを実行してビルド番号を更新する前に行われます。これが、ビルド番号が .ipa ファイルで最新のものにならない理由だと思います。
info.plist ファイルが処理される前にスクリプトの実行フェーズを強制的に実行する方法はありますか?