CFBundleVersion в ошибке загрузки Info.plist

108

«Загруженный вами двоичный файл недействителен. Ключ CFBundleVersion в файле Info.plist должен содержать более высокую версию, чем версия ранее загруженной».

Я получаю эту ошибку, когда прихожу, чтобы загрузить свое приложение.

Я установил обновленную версию 1.2 в iTunes Connect, а также обновил .plistфайл до 1.2.

Я не понимаю, почему я получаю эту ошибку. Любая помощь будет оценена. Спасибо.

Адам Х
источник
Почему бы не попробовать установить его, скажем, на 1.2.1?
Никита Рыбак
Я перепробовал много комбинаций. Ни одной работы. Эта ошибка продолжает появляться.
Adam H
1
И какая версия была загружена ранее (как указано в Info.plist текущего приложения)?
Costique,
Решили ли вы эту проблему? Та же проблема внезапно случилась со мной. Это расстраивает.
Wayne Lo
Я только что получил электронное письмо с этой ошибкой, и оказалось, что одна из моих старых сборок, которая застряла в ITC как «обрабатываемая» на прошлой неделе, наконец была обработана. Когда он впервые застрял, я повторно отправил другую сборку с увеличенным номером сборки, поэтому, когда старая, наконец, была обработана, это вызвало ошибку.
blwinters

Ответы:

210

На сервере загрузки Apple есть по крайней мере одна известная ошибка, которую они не исправляли более 12 месяцев. Чего следует остерегаться:

  1. Apple удаляет все начальные нули внутри номера версии; т.е. «вся строка» НЕ обрабатывается как число, вместо этого биты между точками рассматриваются как ОТДЕЛЬНЫЕ числа. например, «1.02» обрабатывается Apple как «1.2». Итак, для Apple 1.02 БОЛЬШЕ, ЧЕМ 1.1.
  2. Apple иногда «путается» и, кажется, сравнивает ваше загруженное приложение с версией ДРУГОГО приложения, которое вы ранее загрузили. Это случилось со многими людьми, и я сам видел это несколько раз
  3. Предполагается, что Apple будет сравнивать «CFBundleVersion» (т.е. «Версия пакета», а не «Строка версий пакета, короткая»); не путайтесь.
  4. Часто единственным жизнеспособным решением является увеличение числа на лицевой стороне (например, «2» в «2,4» - увеличьте его до «3»).
  5. Номер версии, которую вы загружаете, не связан с номером версии, который отображается в iTunes - вы можете поместить туда все, что хотите, и это то, что увидят ваши пользователи.
  6. ... за исключением того, что если вы также укажете "фактический" номер версии внутри своего приложения, пользователь увидит CFBundleVersion (обычно это зависит от того, как вы его кодируете), а не версию iTunes (которая, как я думаю, недоступна из внутри вашего приложения)
Адам
источник
1
CFBundleVersion - это то, что в xcode 4.5 помечено как «Сборка», а НЕ «Версия»! Версия заканчивается помеченной "CFBundleShortVersionString" в файле Info.plist. Итак, действительно, вам нужно предоставить более высокое значение для сборки, чем раньше.
RickJansen
+1 Полезный. Я использовал 1.02для своей предыдущей версии. И исправьте это, используя этот ответ. Спасибо.
Praveenkumar
Этот ответ следует добавить в FAQраздел о том, как отправить приложение в магазин приложений. :))
danypata
@Adam: Как я читал, CFBundleShortVersionStringномер версии, который вы указали в iTunes Connect, должен совпадать. Это означает, что если вы укажете номер своей версии в используемом приложении CFBundleShortVersionString. Также CFBundleVersionследует увеличить, и именно его использует Apple, чтобы определить, отправляете ли вы обновленную версию своего приложения.
тестирование
Apple недавно переосмыслила значение всех своих строк, сделав НЕ обратно совместимую.
Адам
28

Обновите номер сборки. Номер версии важен, но номер сборки имеет решающее значение. Например, моя первоначальная версия приложения была такой:

version #: 1.0
build #:   1.0

Однако когда я попытался загрузить следующую версию, т.е.

version #: 1.1
build #:   1.0

Он не примет загрузку. Просто увеличив номер сборки до 1.1, загрузка была принята.

Сумасшедший шимпанзе
источник
Отлично ... изменение сборки # сделало это за меня, и это здорово, так как я действительно хотел синхронизировать свою версию пакета и версию iTunes.
Аарон Хейман,
9

Xcode 4 подумает, что вы хотите повторно загрузить ту же версию, если вы не заархивируете приложение повторно. Даже если вы измените версию пакета и выполните повторную сборку, загрузка не удастся. Не забудьте сделать « Архив » в меню продукта!

Патрис Ганьон
источник
7

Многие из ответов здесь в конечном итоге помогли мне, но только когда я увидел точный номер «версии», который сравнивала Apple.

  1. Перейдите в iTunes Connect -> Управление приложениями.
  2. Выберите приложение, которое вы хотите проверить в предыдущей версии
  3. Нажмите синюю кнопку с надписью View Details.
  4. Щелкните ссылку с надписью Binary Details
  5. Найдите значение, указанное для версии пакета

Несмотря на то, что я думал, что отправил номер версии 1.0.1, на самом деле Apple сохранила номер 101. Некоторые из приведенных выше комментариев заставили меня поверить, что мне нужно изменить свою версию на 2.0 (20), 1.5 (15) или 1.2 (12 ) - как видите, все они меньше 101. Обновление моего номера версии 102 (без точек) устранило проблему.

Кайл Хейс
источник
6

В этой статье указывается, что номер версии в магазине приложений не обязательно совпадает с номером версии пакета. Когда вы просматриваете сведения о своем приложении в iTunes, есть ссылка под названием «Двоичные данные». На этой странице показана версия пакета. Одно из приложений, над которым я работал, было версии 1.0, но это была пакетная версия 2.0. Загрузить пакет с версией 1.1 не удалось, но 2.1 работала.

Итак, есть версия приложения и версия пакета. Эта проблема связана с версией пакета.

Питер Витвоет
источник
5

Кажется, путаница вызвана форматом чисел. Версия пакета не является десятичной. Это версия (или, возможно, сборка), так что 1.11 на самом деле «одиннадцать баллов». Следовательно, 1,11 больше 1,2. В этом случае я успешно использовал 1.20.

Гэвин
источник
4

Обычно это может быть вызвано отсутствием номера версии. Итак, добавьте номер версии в поле Identity, а также проверьте номер сборки.

введите описание изображения здесь

Продолжайте кодировать ......... :)

Кришна Радж Салим
источник
3

Для меня (Xcode 4.5) изменение номера сборки решило проблему. установите версии 1.0.2 ... 2.0.2 и т. д., затем увеличьте номер сборки (3 балла Адама дадут мне подсказку, где искать).

setdvd
источник
2

Вы должны иметь возможность войти в iTunes Connect и увидеть текущую версию приложения (включая те, которые вы отправили, но еще не запущены). Убедитесь, что вы ранее не отправляли версию с более высоким (или таким же) номером версии.

Дэнни Таппени
источник
Это заблуждение; Apple НЕ сравнивает просто с версией iTunesConnect. см. ответ Питера ниже для более точного ответа.
Адам
@Adam На данный момент (2014-05) Apple действительно сравнивает внутренний номер (а) версии вашего приложения iOS с номером версии iTunesConnect. В случае несоответствия вы получите это предупреждающее сообщение (не ошибку): Version Mismatch - Neither CFBundleVersion ['201405030503'] nor CFBundleShortVersionString ['201405030503'] in the Info.plist match the version of the app set in iTunes Connect ['1.0.0'].Но это сравнение iTunesConnect не является причиной проблемы в этом Вопросе. Сравнение iTunesConnect - это просто предупреждение, а не ошибка остановки показа.
Basil Bourque
2

Я потратил несколько часов, пытаясь решить эту проблему. Я проверил изо всех сил, чтобы убедиться, что CFBundleVersion действительно выше, чем более старая версия, открыв info.plist в текстовом редакторе, получив информацию о цели и прочитав версию в свойствах, попросил мою жену прочитать версию в iTunes, чтобы подтвердить, что меня не поразила неожиданная ранее болезнь Альцгеймера.

В конце концов, это как-то помогло. Моя старая версия была 1.0.4. Пробовал 1.3.5, 1.4.5 и т.д .; никто не работал. Но достаточно удивительно, когда я вошел в 2.0.0, Application Loader понравилось то, что он увидел, и он загрузил это. Это связано с ошибкой в ​​загрузчике приложений?

Уэйн Ло
источник
2

В сводке целей рядом с номером версии в xcode4 есть сборка, я начал ее с 1, я увеличиваю каждый раз, когда выполняю двоичную загрузку, это решило проблему для меня

топор
источник
Это тоже была моя проблема, сообщение об ошибке вводит в заблуждение!
mj662
У меня тоже была такая проблема. Невероятно разочаровывает то, что это сообщение вводит в заблуждение. Потратил зря большую часть дня. Спасибо за полезный ответ.
Joel Anair
2

Если сообщается об ошибке CFBundleVersion, исправить это обычно довольно просто. Проверьте / попробуйте это:

  1. Перейдите к элементу проекта верхнего уровня в Project Navigator и щелкните по нему.
  2. На панели справа щелкните цель приложения.
  3. Щелкните вкладку сводки.

На вкладке сводки вы увидите, что есть две разные «версии», которые можно изменить. Первое - это поле «Версия», которое используется на экране «О программе» по умолчанию для приложений Mac. Справа - «Версия сборки». Это то, что действительно важно для заявок в App Store!

Дэвид Хельзер
источник
2

Я знаю, что это старый вопрос, но я только что столкнулся с этой проблемой. Решил, удалив проект из архива, потом переархивировав. Видимо предыдущая версия приложения сидела там и вызывала путаницу.

Генри Ф
источник
2

Обратите внимание на сообщение об ошибке.

Сообщение об ошибке содержит предыдущий номер пакета в квадратных скобках (например, [9]).

Таким образом, вам нужно увеличить этот номер пакета (например, 9.1), хотя ваш новый номер версии - 1.2.

Поэтому, когда вы обновляете версию с 1.1 до 1.2 в iTunes Connect, вам необходимо установить эти значения в своем проекте.

Version number = 1.2
Bundle number = [previous bundle number]++
Серж Селецкий
источник
2
ПРИМЕЧАНИЕ: если вы не уверены, какой комплект был # для последней загруженной версии, щелкните старую версию и найдите двоичные сведения (в разделе «Ссылки»). Вы должны увидеть "Bundle Version: #"
Nathaniel Blumer
1

В моем проекте есть версия для iPhone и iPad, информационный лист для ipad по какой-то причине не был связан с продуктом ipad. Проверка членства в Target и связывание его с правильным продуктом решило эту проблему для меня.

Джей Адамс
источник
1

Я сделал ошибку, поменяв местами «Версия» и «Номер сборки».

Вместо того, чтобы указывать 2.3 в поле «Версия», я помещаю его в поле «Номер сборки».

Притеш Десаи
источник
1

Вот как я решил проблему (и я предполагаю, что это проблема многих людей):

1) Щелкните на общей вкладке настроек вашего проекта (к которой можно получить доступ, щелкнув имя вашего проекта, которое находится вверху всех файлов кода).

2) Убедитесь, что поле сборки соответствует тому, что вы поместили в свой список для ключа «Версия пакета».

Это было проблемой для меня, по какой-то причине они не синхронизировались. Я думаю, что когда вы меняете ключ версии Bundler, он должен синхронизироваться (и наоборот). Но этого не произошло по какой-то причине - может быть, ошибка.

Сер Пунс
источник
1

У меня была такая же проблема, и это произошло из-за того, что я не заархивировал и использовал первый архив, который я использовал для 1.0, но с 1.0.1. Итак, я выбрал устройство iOS, заархивировал и проверил. Та-дааа, сработало!

Гонзо345
источник
должен быть комментарий, а не ответ.
Hello World
0

У меня такая же проблема. В основном моя предыдущая версия была 1.12. Я хотел изменить ее на 1.2, но имел указанную ошибку. Я попробовал 1.20, и он отлично работал

мукаисси
источник
Второе число должно быть от 0 до 9, так что 12 "слишком много"
JOM
1
«Второе число» (позвольте мне называть его второстепенным номером версии, просто для удовольствия) может быть любым целым числом, для него нет границ; так что идеальный 12или 20является второстепенным номером версии.
holex
0

Никакой набор постоянно увеличивающихся номеров версий не работал, пока я использовал Apple «Application Loader» для загрузки моего файла ipa, но если бы я использовал «Организатор» XCode (находится в раскрывающемся списке «Окно» в версии 3.2.5) , нажал кнопку «Подтвердить ...», подождал, пока он меня одобрит, затем нажмите кнопку «Отправить ...», все прошло, как ожидалось, с нормальным номером версии (который на единицу больше текущего доступно в магазине приложений).

идеи
источник
0

в xcode 4.2 кажется, что не регистрируйте версию пакета, если вы вносите изменения из файла info.plist. Я установил свою новую версию пакета прямо в панели xcode "информация", и теперь она работает!

Марко Аллори
источник
0

Нашел другое решение.

Если вы выберете цель >> информация >> обновите Bundle ID.

Майкл
источник
0

У меня такая же проблема. Первой представленной версией была 1.5.20, и хотелось обновить до 1.7.30.

После безуспешных попыток версий 1.8, 2.0 и 3.0 я обновил CFBundleVersion до 10.0, и внезапно все заработало.

Я не уверен, какова логика такого поведения, но из-за этого я потратил около 2 дней рабочего времени.

BastiBen
источник
0

Проверьте версию пакета ранее загруженной версии, вы должны указать более высокую версию пакета по сравнению с версией пакета уже загруженной версии. Уже загруженную версию можно просмотреть с помощью itunesconnect / application / view details / binary details.

Вишну Р. Каймал
источник
0

Я провел две ночи над подобной проблемой. Моя предыдущая версия была 1.02, и я пытался проверить с 1.2, 1.20, 1.1, и всегда получал неверное двоичное сообщение.

Я решил это, введя 2.0 в качестве номера версии, и это сработало . Я подозреваю, что это тоже ошибка. Я не получал этого сообщения при недавнем обновлении моей игры с 1.0 до 1.1, но это было с xcode 3. Спасибо за совет!

machineboy
источник
0

У меня была аналогичная проблема, и через полчаса я заметил, что увеличиваю неправильное число. Вместо увеличения Bundle versionя увеличивал Bundleversions, string, shortв Info.plist. Найдите «CFBundleVersion» в своем проекте, используя CMD + Shift + F. Вы увидите, что вам нужно увеличить номер CFBundleVersion.

Иосип Б.
источник
0

Попробуйте изменить версию = "1.1.1.0" на версию = "1.1.1"

RouR
источник
0

По состоянию на конец октября Apple требует, чтобы номера версий были меньше 4 цифр (1.2.3 или 1.23 в отличие от 1.2.3.4 или 1.234). Это относится и к библиотекам!

Быстрый поиск с ошибкой номера версии в каталоге вашего проекта с помощью команды grep должен открыть библиотеку с ошибкой:

grep -r "1.2.3.4" .

Коробление
источник
0

У меня была активная бета-версия TestFlight. Сборка 2020 , версия 407

Я отправил приложение для официальную проверку в App Store. Сборка 2020 , версия 435, и она была одобрена. Он просто сидит и ждет, пока я выложу его в App Store.

Не добавляя сложной побочной истории, я хотел дать моим пользователям бета-версии TestFlight обновленную версию для предварительного просмотра официальной версии App Store в течение нескольких дней, прежде чем запускать версию App Store. Почему ты спрашиваешь? Поскольку они получали бесплатные функции, как только приложение будет запущено, это будет стоить денег.

Итак, я отправил сборку 2020 версии 436 в TestFlight, и она была отклонена.

Он был отклонен, потому что у меня есть утвержденный официальный кандидат в App-Store с тем же номером сборки.

Решение: измените номер сборки вашей версии TestFlight. Я отправил Build 20200 (я добавил лишний ноль) версию 436 в TestFlight, и она была одобрена. Не волнуйтесь, вы все равно можете отправить эту сборку в ту же бета-группу TestFlight, если все еще используете тот же BundleID.

jungledev
источник