Поля версии / сборки для приложения iOS включают:
«Version» CFBundleShortVersionString (String - iOS, OS X) указывает номер версии выпуска пакета, который определяет выпущенную итерацию приложения. Номер версии выпуска представляет собой строку, состоящую из трех целых чисел, разделенных точкой.
«Build» CFBundleVersion (String - iOS, OS X) указывает номер версии сборки пакета, который определяет итерацию (выпущенную или невыпущенную) пакета. Номер версии сборки должен быть строкой, состоящей из трех неотрицательных целых чисел, разделенных точками, причем первое целое число больше нуля. Строка должна содержать только числовые (0–9) и точки (.). Начальные нули отсекаются от каждого целого числа и будут проигнорированы (то есть 1.02.3 эквивалентно 1.2.3). Этот ключ нельзя локализовать.
«Номер версии iTunes Connect» : номер версии, который вы указываете при создании новой версии приложения в iTunes Connect.
У меня вопрос:
Какие номера версий / сборок необходимо увеличить, когда новая версия приложения загружается в iTunes Connect и / или выпускается в App Store?
Может ли «версия» CFBundleShortVersionString
или «сборка» CFBundleVersion
оставаться неизменными между обновлениями приложения?
Дополнительные баллы для источников Apple или точные сообщения об ошибках, отображаемые iTunesConnect при загрузке недопустимого номера версии / сборки.
Примечание для Android / Google Play:
Обсуждение, вызывающее этот вопрос, заключается в том, что общедоступная «версия» приложения Android в Google Play Store не требует увеличения и никоим образом не проверяется. android:versionName
Может оставаться такой же между выпусками, обновление, понижение рейтинга, или любая случайная строка , а не то , что , как представляется допустимым «номер версии».
android:versionName
- Строковое значение, представляющее версию выпуска кода приложения в том виде, в каком оно должно быть показано пользователям.Значение представляет собой строку, так что вы можете описать версию приложения как
<major>.<minor>.<point>
строку или как любой другой тип абсолютного или относительного идентификатора версии.
Разница между versionName и versionNumber в Android
В то время android:versionCode
как принудительно должно быть целым числом, увеличивающимся при выпуске.
Документация Apple
Как отмечено в недавно принятом ответе , Apple недавно опубликовала Техническую заметку, в которой подробно описывается их версия и схема номеров сборки:
Техническое примечание Apple TN2420 - Номера версий и номеров сборок
Ответы:
Техническое примечание Apple TN2420, номера версий и номеров сборок
Резюме:
Version
,Build number
) должна быть уникальной.Version
( CFBundleShortVersionString ) должно быть в порядке возрастания.Build number
( CFBundleVersion ) должны быть в порядке возрастания.На основании контрольного списка
(Version, Build Number)
действительна и следующая последовательность.Случай: повторное использование
Build Number
в разных цепях выпуска. (ПРИМЕЧАНИЕ: НЕ приложение для macOS)(1.0.0, 1) -> (1.0.0, 2) -> ... -> (1.0.0, 11) -> ( 1.0.1 , 1 ) -> (1.0.1, 2)
источник
(major, minor, patch)
манере. Раньше я использовал 4 компонента, но магазин приложений не принимает этот формат с 4 компонентами.Он
CFBundleShortVersionString
должен соответствовать номеру версии, который вы предоставляете iTunes Connect. Это также номер версии, который отображается, когда пользователь просматривает ваше приложение в App Store.CFBundleVersion
Не отображается в App Store, но используется в ITunes , чтобы определить , когда ваше приложение было обновлено.Отвечая на ваши вопросы более конкретно ...
Обе. Один отображается в App Store, другой используется iTunes для обновления приложения.
Нет (мета-вопрос, какой здесь вариант использования? Если вы каким-либо образом отредактировали полезную нагрузку, сборка будет другой, и пользователь захочет узнать об этом). Если вы попытаетесь, вы увидите сообщения об ошибках, как показано ниже:
Да. Использование стандарта semver.org .
Нет.
источник
CFBundleShortVersionString
. Это возможно? Я хочу отклонить собственное приложение.CFBundleShortVersionString - это публичное «имя» версии (пример: «2.5» или «3.8.1»). Вы должны увеличивать его с каждым выпуском .
CFBundleVersion - это частный номер сборки . Его не видно в AppStore. Вы должны увеличивать его при каждой загрузке . Это означает, что если вы когда-нибудь отклоните двоичный файл до того, как он перейдет в оперативный режим, и вы захотите загрузить новый двоичный файл, он будет иметь тот же CFBundleShortVersionString, но должен иметь более высокий CFBundleVersion (пример: общедоступный «2,5», частный «2,5», а затем двоичный код отклонить и повторно загрузить частный "2.5.1")
Редактировать 16 ноября 2016 г .:
/ ! \ Свойство CFBundleVersion также используется (вместе с CFBundleName ) в
User-Agent
заголовке, отправляемом NSURLConnection в вашем коде.Пример: если CFBundleName - MyApp, а CFBundleVersion - 2.21, то любой программный HTTP-запрос, отправленный непосредственно вашим кодом с использованием NSURLConnection, будет включать заголовок:
User-Agent: MyApp/2.21 CFNetwork/... Darwin/...
(Это не относится к запросам, автоматически отправляемым UIWebView).
источник
X.X-rc2
дляX.X.2
для системы CI , чтобы сгенерироватьbuildNumber
для загрузки в iTunesConnect.CFBundleVersion и CFBundleShortVersionString должны быть больше, чем номер последней версии приложения. Хорошая практика - оставить их такими же. Вы должны найти их в вашем -info.plist.
При попытке проверить приложение в органайзере будет выдано сообщение об ошибке, если какое-либо из них не было увеличено. Со мной случилось прошлой ночью.
источник
Оба
CFBundleVersion
иCFBundleShortVersionString
ДОЛЖНЫ быть увеличены при выпуске новой версии в App Store.Кроме того, одна из строк должна соответствовать версии, указанной в iTunes Connect.
Этот вопрос включает в себя приведенный выше снимок экрана валидатора Xcode Organizer, который отказывается проверять приложение, когда
CFBundleVersion
иCFBundleShortVersionString
не были увеличены.Этот пакет недействителен. Значение ключа
CFBundleVersion
[1.0] в файле Info.plist должно содержать более позднюю версию, чем версия ранее загруженной версии [1.134].Этот пакет недействителен. Значение ключа
CFBundleShortVersionString
[1.0] в файле Info.plist должно содержать более позднюю версию, чем версия ранее загруженной версии [1.134].Валидатор также выдает ошибку, доказывая, что одна из строк должна соответствовать версии приложения, созданного в iTunes Connect.
источник
В текущем техническом примечании Apple TN2420, «Номера версий» и «Номера сборки» говорится (выделено жирным шрифтом):
К сожалению, это означает, что вы не можете повторно использовать номер сборки, который соответствует номеру последовательности выпуска на iOS, когда вы пытаетесь выпустить ту же сборку на Mac Catalyst.
В моем случае, например, из-за некоторых более ранних проблем я закончил выпуск 1.0.2 (4) как приложение Mac Catalyst, которое соответствовало 1.0.2 (1) на iOS. Теперь при попытке выпустить 1.0.3 (1) на обоих приложениях приложение не проходит проверку в MacOS из-за номера сборки, тогда как оно проходит проверку на iOS.
Я предполагаю, что теперь, когда я регулярно выпускаю одно и то же приложение для iOS и MacOS, я буду использовать номера сборки, соответствующие дате, например, 20200111, и увеличивать с десятичной точкой, если мне нужно изменить номер сборки в данном выпуске.
источник
Вам нужно увеличить оба .
При загрузке новой версии вам нужно будет создать новую версию в iTunes Connect, которая автоматически будет выше, чем предыдущие версии. Эта версия в iTunes Connect будет ожидать двоичный файл с тем же номером версии, поэтому ее
CFBundleShortVersionString
необходимо увеличить.Если вы обновите версию, но забудете
CFBundleVersion
увеличить, вы столкнетесь с ошибкой во время загрузки. См. Ответ и скриншот pkamb.Подробнее о
CFBundleShortVersionString
иCFBundleVersion
см. На странице https://stackoverflow.com/a/31921249/936957.источник
Я могу подтвердить, просто попробовав оба способа, что последовательность номеров версий и сборок вроде ...
... будет приниматься для приложений iOS, но для приложений Mac (Catalyst) он возвращает эту ошибку:
Номер версии и сборки для Mac должен выглядеть как ...
Для iOS я использовал номера сборки как номер версии плюс четвертую цифру, например ...
... но это также не разрешено для приложений Mac. Когда я пытался отправить свое первое приложение для Mac (Catalyst), Apple принимала только номер сборки, состоящий из трех или менее цифр:
Поэтому я перешел на одно число, которое увеличивается для каждой сборки и продолжает увеличиваться для номеров версий.
источник
Я готовлюсь к выпуску нового приложения Mac App Store. Использование форматирования CalVer файлов
YEAR.release (build)
.Я загрузил несколько сборок:
2020.0 (1)
,2020.0 (2)
и т.д. Я , наконец , представлен2020.0 (8)
на App Store Review. Он прошел проверку и находится в состоянии ожидающего выпуска разработчика .Я хотел , чтобы исправить несколько вещей , перед выпуском, так что я добавил новую сборку в том же поезде релиз:
2020.0 (9)
.Это приводит к ошибке:
что раздражает, поскольку моя
2020.0
версия никогда не была выпущена . Из принятого ответа на этот вопрос у меня сложилось впечатление, что до тех пор, пока приложение не будет доступно в App Store, вы можете продолжать выпускать новые сборки с той же версией.Решение, похоже, состоит в том, что «поезд выпуска» (та же версия + новая сборка) не может быть обновлен, если состояние приложения - « Ожидающий выпуск разработчика» . Либо выпустите существующую сборку, а затем увеличьте версию, либо отмените этот выпуск в App Store Connect, чтобы разрешить дальнейшие загрузки для этого набора выпусков.
источник
AFAIK, из моей головы, вам нужно только увеличить номер сборки
CFBundleVersion
. Увеличение строки короткой версии необязательно, хотя вам, вероятно, следует увеличить ее, поскольку она сообщает пользователю, что приложение новое. Apple утверждает, что нумерация должна соответствовать традиционным соглашениям об управлении версиями программного обеспечения, и iTunes Connect может пожаловаться, если вы попытаетесь повторно загрузить уже существующую версию.Короче говоря, это может сработать, но, вероятно, нет.
источник
CFBundleShortVersionString
приращение не требуется, «одну и ту же» пользовательскую версию можно будет загрузить в App Store несколько раз?