2010-08-12 1 views

ответ

1

Вам понадобится файл конфигурации Xcode и переменная конфигурации, установленная во время сборки. Это described in some detail по адресу Diego Massanti’s blog. Вам нужно будет изменить фазу сборки, которую он описывает, чтобы установить переменную в текущую дату вместо увеличения существующего значения.

+1

Я изучил жизненный цикл сборки xcode. он сначала анализирует Info.plist, и только затем он выполняет фазы сборки. Это не очень динамично, поскольку он создает состояние, которое будет использоваться в следующей итерации сборки. У меня есть улучшение для Диего. Он должен действительно редактировать (postprocess) Info.plist в встроенной папке и получать динамический аспект. Благодаря вам, я вижу, как это можно достичь, но это ужасно уродливо. – bioffe

2

Если вы делаете из командной строки сборки с xcodebuild, вы можете сделать что-то вроде

xcodebuild -target MyApp -configuration AppStore BUNDLE_VERSION=`date "+%y%m%d"` 

Тем не менее, я советую не делать этого. Приложение App Store имеет три версии:

  • Номер версии ITunes Connect (это только один обычно показывается пользователю)
  • CFBundleVersion
  • CFBundleShortVersionString

Я думаю, что они все должны иметь форму [0-9]+.[0-9]+(.[0-9]+)?. Чтобы избежать путаницы, я поставил их все одинаково для сборки App Store (мы включаем CFBundleVersion/CFBundleShortVersionString в отчетах об ошибках, и это хорошо, если они соответствуют CFBundleVersion). В сборках, не относящихся к App Store, может быть больше информации, так как они не должны быть отправлены.

Я не знаю, может ли iTunes Connect отправить приложение с CFBundleVersion, которое не содержит «.», Но я не проверил это.

+1

CFBundleShortVersionString - это то, что используется AppStore.app и ITunes Store. CFBundleVersion видна только из MetaData от iTunesConnect. У меня CFBundleVersion как беззнаковые целые числа с 2008 года без проблем. Я пытаюсь сделать это поле немного полезным, чтобы определить время сборки, а не версию приложения. – bioffe

+0

Нет; в магазине отображается все, что входит в «Версия» в iTunes Connect. Если вы собираетесь использовать его как временную метку, у меня также возникнет соблазн включить время (yyyyMMdd.HHmmss); это означает, что легче различать несколько сборок с того же дня. Тем не менее, лучший способ пометить сборку - это включить в свой собственный ключ Info.plist (возможно, «DetailVersion»), который может быть в любом формате, который вам нравится. Я включаю ветку, ревизию SVN, конфигурацию и номер сборки. –

+0

, если вы используете модель развертывания Enterprise (или Ad-hoc), в ней не задействовано Itunes Connect. В настольном программном обеспечении iTunes он показывает версию CFBundleShortVersionString как версию. – bioffe