Да, это очень связано с этим вопросом , но я думаю, что на этот вопрос дан адекватный ответ для XCode 3. Не уверен, следует ли это объединить или нет.
Итак, используя аналогичные инструкции оттуда, у меня давно получился приятный эффект того, что номера сборки были закодированы в заархивированные файлы .ipa, так что Организатор показывает версии наподобие «1.0.3281» (где 3281 - это версия, представленная ниже скрипт сборки, прикрепленный к моей целевой iOS):
REV=`svnversion -nc | /usr/bin/sed -e 's/^[^:]*://;s/[A-Za-z]//'`
echo "REV=$REV"
echo "#define kRevisionNumber @\"$REV\"" > ${PROJECT_DIR}/revision.h
echo "INFOPLIST_PATH=${INFOPLIST_PATH}"
BASEVERNUM=`/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" "${INFOPLIST_FILE}" | sed 's/,/, /g'`
echo "BASEVERNUM=$BASEVERNUM"
PLISTARG1="Set :CFBundleVersion $BASEVERNUM.$REV"
echo "PLISTARG1=$PLISTARG1"
/usr/libexec/PlistBuddy -c "$PLISTARG1" "${TARGET_BUILD_DIR}"/${INFOPLIST_PATH}
Однако, XCode 4 (который я с тех пор полюбил) явно нуждается в некоторой настройке, так как эта магия только работает. Вот результат приведенных выше сценариев.
REV=3281
INFOPLIST_PATH=Foo.app/Info.plist
BASEVERNUM=1.0
PLISTARG1=Set :CFBundleVersion 1.0.3281
И, посмотрев в ~ / Library /.../ Foo.app/Info.plist, я вижу, что да, он обновил нужную версию:
<key>CFBundleVersion</key>
<string>1.0.3281</string>
Очевидно, что дополнительный файл нуждается в обновлении ... возможно, в .xcarchive? Любые предложения о том, где в первую очередь углубиться?