Это мое первое iOS приложение представление и я Дон'т хочу, чтобы мое приложение отклонены.
Это из Яблока документы:
CFBundleVersion (строка - iOS и OS X) показывает номер сборки версия пакета, который определяет итерации (выпущенные или выпускавшиеся) пакета. Номер версии сборки, должно быть строкой, состоящей из трех неотрицательных, период-целых чисел с Первое целое число больше нуля. Строка должна содержать только числовой (0-9) и точки (.) персонажей. Ведущие нули отсекаются от каждого целого числа и будут игнорироваться (то есть 1.02.3 эквивалентно 1.2.3). Этот ключ не локализуемые.
CFBundleShortVersionString (строка - iOS и OS X) показывает выпуск номер версии пакета, который идентифицирует выпущены версии приложения. Выпуска номер версии-это строка, которая состоит из трех разделенных чисел. Первое число обозначает основные изменения в приложения, такие как изменения, которые реализуют новые функции или существенных изменений. Второе число обозначает изменения, которые реализуют менее заметные. Третье число представляет новых релизов.
Это значение отличается от значения для “CFBundleVersion”, который определяет итерации (выпущенные или выпускавшиеся) приложения. Этот ключ может быть локализованной, включите его в InfoPlist.строки файлов.
Но это кажется немного странным. Мой перевод для это поставить оба значения совпадают, т. е.:
CFBundleVersion: 1.0.0
CFBundleShortVersionString: 1.0.0
Может кто-то подтвердить на 100%, что это то, что я должен положить?
CFBundleShortVersionString дает версия приложения. Это'ы, как правило, увеличивается каждый раз, когда вы публикуете свое приложение в магазин приложений. Это версия, которая видна на глаз "Версия" в разделе для страницы приложения в магазине приложений.
CFBundleVersion дает номер сборки, которая используется для разработки и тестирования, а именно на "технические" в целях. Конечного пользователя редко интересует номер сборки, но при разработке необходимо знать, что'ы, которые разрабатываются и закрепляются на каждом построении. Это, как правило, увеличивается на каждой итерации внутреннего освобождения. И вы можете использовать инструменты непрерывной интеграции, как Дженкинс с автоматическим приращением номер сборки на каждом построении.
Эти две цифры не зависят друг от друга, но это хорошая идея, чтобы держать их параллельно, чтобы избежать путаницы. Имейте в виду, что после того, как приложение пройдет рассмотрение в App магазин, вы должны инкрементировать номер сборки, как Фил и likeTheSky заявляли, независимо от того, публиковать его или нет.
Пример: пусть'ы сказать, у вас есть хорошо проверенный строить, готов для представления. Он's номер версии 1.0.0 и номер сборки 1.0.0.32. После отправки Вашего приложения, вам необходимо обновить версию 1.0.1 и номер сборки как 1.0.1.0.
Подумайте об этом так: в "вкратце" и (CFBundleShortVersionString
) - это количество публичных версия. В "Версия" у (`CFBundleVersion) более внутренний номер версии, который может меняться гораздо чаще, чем общественность "по короткой версии и". Лично я использую то же самое для обоих, но многие люди обновления в "Версия" на каждой сборки. В любом случае вы, как правило, обновления в "вкратце" Когда вы отпустите Яблоко. Как часто вы обновляете и"Версия" это до вас и ваших потребностей.
Ответ на rmaddy является правильным. Я'Лл добавить еще две мысли.
Быть осведомлены о третьей номер версии, указанный на веб-сайте iTunesConnect, как часть вашего приложения'ы определение. Если это число отличается от двух в Xcode, Apple дает вам предупреждение. Вы можете проигнорировать предупреждение, так как это не шоу-стоппер (не "по ошибке").
Кроме того, вам не нужно использовать три цифры с пунктуацией. Это чувство для некоторых приложений, где традиционно изменения в первом указанному номеру какие-то драматические изменения, как правило, влияющие на совместимость.
Для других приложений, которые вы, возможно, захотите использовать просто значение даты и времени в ISO 8601 стандартный стиль формат (ГГГГММДДЧЧММ). Например, 201606070620
. Таком порядке год-месяц-дата-час-минута оказывает все большее количество, всегда одинаковой длины за счет заполнения нулевой, что при сортировке по алфавиту тоже хронологическом.
Я успешно использовал этот стиль номера версий на доставку iOS приложение работает в iOS 7, 8, & 9.
Вы даже можете автоматизировать создание этой ценности. В своем проекте "целевой" и GT; построить фаз в
> выполнить скрипт
группа:
в
раковины
: /Бен/ш
Показать переменные среды в флажок создать отчет
.запустить скрипт только при установке
флажок.Каждый раз, когда вы делаете построить текущую дату-время в мирового часовой пояс в плен. Параметр -U
флаг в скрипте используется Гринвичу, а не ваш текущий часовой пояс по умолчанию. Вообще лучше всего для программистов и сисадминов, чтобы быть помощью и мышление в формате UTC, а не местное часовых поясов.
#!/bin/bash
buildNumber=$(date -u "+%Y%m%d%H%M")
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $buildNumber" "$INFOPLIST_FILE" # Version number
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE" # Build number
echo "DateTime for app version number: $buildNumber"
Или делать гибрид, с обычным 1.2.3
для номер версии и дата-время-Номер сборки. Чтобы сделать этот гибрид, просто закомментируйте строки CFBundleShortVersionString
С #
в начале.
Я использую CFBundleVersion для обозначения внутренней сборки для CFBundleShortVersionString. Я использую тестовый полет представить строит для меня пробники, чтобы разница между ними была очень полезной.
Документы Apple утверждает, что CFBundleVersion-то "должен быть строкой, состоящей из 3 неотрицательным, период-целых чисел", но на самом деле это может быть более 3 частей(как ответили выше показывает). Я использовать это, чтобы указать Мое создание, сказать, что мой CFBundleShortVersionString-это 1.0.0, могу ли я использовать 1.0.0.11 для CFBundleVersion, чтобы указать, что это мой 11-й сборки к релизу 1.0.0
Каждый CFBundleVersion представлен в App магазин должно быть больше, чем раньше, или вы ITMS-90478 ошибка: "и недопустимые версии. Сборку с версией “ХХХ” не могут быть импортированы, потому что более поздние версии был закрыт для новых представлений выстроить. Выберите другой номер версии.&и"
CFBundleShortVersionString может иметь только 3 части, или вы получите ITMS-90060 ошибка:значение ключа CFBundleShortVersionString 'ХХХ' В информация.plist файл должен быть списком разделенных по самые три целых неотрицательных чисел&.и"
В 3-й ряд, что Василий Бурк, т. е. номер версии показывает на iTunesConnect это где вещи могут получить сложнее.
Я использую разное количество iTunesConnect, чем CFBundleShortVersionString потому что, когда я впервые представил свое приложение в магазине приложений у нас уже есть много туров внутреннего релизы. Поэтому я использовал 1.0 для iTunesConnect и 5.X для CFBundleShortVersionString. В следующем выпуске магазина приложений я предоставил функция, чтобы проверить, если есть более новая версия в App Store и понял, что у меня проблемы сейчас, потому что я могу только сделать iTunesConnect количество (используя `http://itunes.apple.com/lookup?bundleId=) так мне нужно сделать некоторые расчеты, прежде чем сравнивать его с CFBundleShortVersionString количество.
Я пытался исправить это с помощью ряда iTunesConnect как мой CFBundleShortVersionString, но получил ошибку ITMS-90062 ошибка: "эта связка является недействительным. Значение для ключа CFBundleShortVersionString [х.х.X] в инфо.plist файл должен содержать более высокую версию, чем ранее утвержденной версии [х.х.х].&и"
Так что я предлагаю всегда сделать их одинаковыми.
Схема самый разумный для меня, чтобы использовать номер версии (т. е. CFBundleShortVersionString
) за фактический номер версии, а затем использовать номер сборки (т. е. CFBundleVersion
) для представления в магазине приложений. Так что, если есть какие-то проблемы и, следовательно, повторно утверждает, это число всегда равно 1. Для нового релиза, я сбросил до 1, Если предыдущие были проблемы в тестировании использовать TestFlight или в комментарий.
цифры построений позволяют назвать каждый из представленных вы обеспечить для определенного выпуска. Как описано в приведенных выше определений, совокупность всех сборок, которые вы предоставляете для конкретной версии вашего приложения, что версия'с 'поезд выпуск'. Для iOS приложений, построение номера должны быть уникальными в пределах каждого поезда выпуска, но они не должны быть уникальными для разных выпусков [мой акцент]. То есть, для приложений iOS вы можете использовать одни и те же номера в разных выпуске поездов, Если вы хотите.
Из техническая записка TN2420: номера версии и номер сборки.
Что-то я'никогда не видел обсуждали где-то, что это максимальное число для каждого поля в CFBundleVersion?
Установив CFBundleVersion в приложение 1.1.1 и глядя на шестнадцатеричном vaue за версию в "lsregister -свалить на" Я определил, что максимальное значение для первого поля составляет (2^22)-1 или 4194303, и максимальные значения для второго и третьего поля (2^21)-1 или 2097151.
В 3 поля добавить до 64 бит.
Это имеет значение для тех из нас, кто использует CFBundleVersion на основе даты и времени.
Я сидел в первом поле ГГГГММДД. Это всегда больше, чем максимальное допустимое версии и это приведет к непредсказуемым результатам, мягко говоря, для запуска услуги была решить, какая версия приложения для запуска, когда у вас несколько версий, установленных и используя что-то вроде 'открытым Имя_приложения' из командной строки.
Просьба широко распространить это. Я уверен, что много людей приходят отклеивается с этим.
Как-сейчас, яблочная документацииCFBundleVersion
государства [выделено мной]:
версия сборки, которая определяет итерации пакета.
...
этот ключ представляет собой машиночитаемую строку, состоящую из Один в период трех целых чисел, таких как 10.14.1. Строка может содержать только цифровые символы (0-9) и периоды.
...
вы можете включить больше целых, но система их игнорирует.
Для CFBundleShortVersionString
[выделено мной]:
выпуск или номер версии пакета.
...
и GT; данный ключ является видимых пользователем строк для версии расслоения. Требуемый формат: три периода-целых чисел, таких как 10.14.1. Строка может содержать только цифровые символы (0-9) и периоды.
Я'd предлагает только автоматически увеличивающегося CFBundleVersion
для каждой сборки (или каждый релиз к TestFlight) и сброс его в 0 всякий раз, когда вы измените CFBundleShortVersionString
.
Вы должны четко план, или разработать адекватные средства, для обновления заметным версия пользователей в CFBundleShortVersionString`.