Не удается запустить приложение на симуляторе после установки Xcode 11 — ошибка CFBundleVersion

Вчера я скачал бета-версию Xcode 11. После этого я открыл свой проект и попытался запустить его с новым Xcode. К сожалению, произошла ошибка с сообщением:


Failed to install the requested application
Domain: NSPOSIXErrorDomain
Code: 22
Failure Reason: The application's CFBundleVersion is invalid.
Recovery Suggestion: Ensure your bundle contains a CFBundleVersion with a valid semantic version number.
--

Я закрыл бета-версию и попытался снова запустить последнюю стабильную версию Xcode (10.2.1), но произошла та же ошибка. Я должен упомянуть, что перед попыткой запустить проект с Xocde 11 он работал без проблем на Xcode 10. Ничего не изменилось до и после запуска с бета-версией Xcode.

Что я уже пробовал:

  • Я удалил бета-версию Xcode 11
  • Я очистил свой проект и вытащил его из последней ветки
  • Я полностью удалил Xcode 10 из:
~/Library/Caches/com.apple.dt.Xcode
~/Library/Developer
~/Library/MobileDevice
~/Library/Preferences/com.apple.dt.Xcode.plist
/Library/Preferences/com.apple.dt.Xcode.plist
/System/Library/Receipts/com.apple.pkg.XcodeExtensionSupport.bom
/System/Library/Receipts/com.apple.pkg.XcodeExtensionSupport.plist
/System/Library/Receipts/com.apple.pkg.XcodeSystemResources.bom
/System/Library/Receipts/com.apple.pkg.XcodeSystemResources.plist
  • А потом установил свежую стабильную версию 10.2.1

Я могу без проблем запускать другие проекты, которые не тестировались с Xcode 11.

Моя последняя идея — просто переустановить macOS, но я бы не хотел этого делать.

Редактировать: я забыл упомянуть, что приложение работает на физическом iPhone XS.

Какое значение у вас есть для CFBundleVersion?

rmaddy 04.06.2019 21:41

Используете ли вы систему контроля версий? Если да, попробуйте просмотреть изменения, прежде чем открывать проект с помощью Xcode 11.

cesarmarch 04.06.2019 21:45

@maddy - у меня версия 0.1 с самого начала проекта. Здесь ничего не изменилось, и до сих пор это работало.

Piotr Sękara 04.06.2019 21:45

@cesarmarch - Да, как я уже сказал, репозиторий был извлечен из последней рабочей версии. Ничего не изменилось.

Piotr Sękara 04.06.2019 21:46

О, я плохо читал, извините. Вы просто очистили и вытащили или сделали полную проверку проекта?

cesarmarch 04.06.2019 21:50

@cesarmarch Не беспокойтесь, я очистил и вытащил репозиторий, а затем полностью проверил проект. Я также пытался запустить проект от своего друга - ничего.

Piotr Sękara 04.06.2019 21:51

Может просто попробовать поменять на 1.0?

cesarmarch 04.06.2019 21:54

Уже пробовал - ставил 0.1, 1.0, 1.1.0, 1.0.1 и т.д. - ничего не помогло.

Piotr Sękara 04.06.2019 21:55

Вы пробовали сбросить настройки симулятора?

cesarmarch 04.06.2019 22:17

При удалении полностью Xcode я также удалил все симуляторы - ничего

Piotr Sękara 04.06.2019 22:20

Я знаю, что это, вероятно, не очень полезный комментарий, но у меня тоже было это с моим проектом. Я не знаю, что именно заставило его исчезнуть для меня, но я сделал следующие вещи, и в итоге все заработало нормально. 1. Отключил подключение к Интернету, 2. Добавил CFBundleVersion в каждый отдельный файл plist в моем проекте, 3. Удалил папку DerivedData, 4. Закрыл Xcode и симуляторы, 5. Построил проект с помощью симулятора Xcode 10 и iOS 12, 6. Закрыл Xcode 10 и попытался собрать его с помощью Xcode 11, и это сработало. Я не знаю почему, даже после отмены изменений файла plist он все еще работает.

silicon_valley 04.06.2019 23:43

Я получаю ту же проблему. пробовал чистить, удалять производные данные, сбрасывать симулятор, перезагружать - все безуспешно. Странно то, что прошлой ночью он выполнил ту же версию кода и Xcode 11 Beta.

Hendrix 05.06.2019 00:50

Обновить. он перестал работать и в Xcode 10. но какой-то волшебный танец вуду чистой сборки, удаляющий производные данные в Xcode 10, позволил ему построить. затем проделал те же самые волшебные шаги и виолончель, его строит. Бесполезно, я знаю, но я так же сбит с толку, как и тогда, когда у меня возникла эта проблема.

Hendrix 05.06.2019 01:14

Стирание всего контента и настроек в каждом из моих симов, похоже, сработало для меня. Я могу создать и запустить наше приложение в Xcode 10/iOS 12 sim и Xcode 11/iOS 13 sim.

bradleyrzeller 05.06.2019 02:09

Не знаю, что сказать... Я уже много раз пытался очистить производные данные, построить папку и симки, но я решил дать еще один шанс для некоторых волшебных танцев на Xcode и после многих попыток удаления dd, очистив папку сборки и удалив содержимое сима, проект запустился на симуляторе. Не знаю как и не знаю что случилось. Ничего не изменилось в файлах проекта (configs/plists и т.д.) при попытке запуска на симуляторе. Мне кажется, это какой-то волшебный жук. Мне потребовалось 12 попыток этой последовательности для запуска приложения на симуляторе.

Piotr Sękara 05.06.2019 08:11

Я попытался очистить производные данные, сбросить симулятор, все та же проблема.

Badrinath 06.06.2019 01:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
52
16
45 393
16
Перейти к ответу Данный вопрос помечен как решенный

Ответы 16

У меня такая же проблема. Я считаю, что примечания к выпуску бета-версии Xcode 11 объяснили это.

Bundles without a CFBundleVersion are invalid and can’t be properly installed on 
devices or simulators. CoreSimulator now checks and rejects such bundles earlier in
the process with a clearer error message. (49892531)

И этот связь является форматом CFBundleVersion.

Когда я решил эту проблему, я обнаружил, что проблема с CFBundleVersion возникает при первом запуске приложения. Тогда у него всегда будут проблемы, независимо от того, правильный формат или нет. Поэтому я перезапускаю Xcode и симулятор и меняю CFBundleVersion на правильный формат, приложение работает правильно.

Это работает, но на самом деле это не имеет никакого смысла, потому что даже с «Недействительным» CFBundleVersion (ранее работающим CFBundleVersion) его можно установить на физическое устройство. Это должно быть ошибкой.

thxou 05.06.2019 09:44

Да, это проблема бета-версии Xcode. Физическое устройство в порядке.

Sgeven.Zheng 05.06.2019 10:13

Из моих тестов это ограничивает только первую установку приложения в симуляторе: последующие обновления приложения могут свободно использовать недопустимую версию CFBundleVersion с бета-версией Xcode 11.

Cœur 06.06.2019 06:14

все еще есть эта проблема в xCode 11.5

Pedro Soares 16.06.2020 10:35

Это новая функция в Xcode11.

В примечании к выпуску было сказано:

Bundles without a CFBundleVersion are invalid and can’t be properly installed on devices or simulators. CoreSimulator now checks and rejects such bundles earlier in the process with a clearer error message. (49892531)

Ты сможешь:

  1. Отредактируйте свою CFBundleVersion в стиле этого СВЯЗЬ
  2. Сбросьте свой Xcode и симулятор
  3. Запустите снова, вы увидите, что он снова работает

Когда вы успешно запустите приложение в симуляторе, вы можете снова изменить свою CFBundleVersion, вы обнаружите, что она все еще может работать XD

Вероятно, какая-то ошибка в Xcode Beta, потому что CFBundleVersion был установлен правильно, а также я ничего не менял при попытке запустить приложение в симуляторе - после 12 попыток очистки производных данных, папки сборки и симулятора он успешно открылся в симуляторе .

Piotr Sękara 05.06.2019 10:21

Что вы подразумеваете под «Сбросьте свой Xcode и симулятор»? Я удалил бета-версию, и это не исправило мою установку Xcode 10.2.1.

Dustin Pfannenstiel 06.06.2019 15:31

В дополнение к этому я заметил, что если ваш CFBundleVersion не указывает:

This key is a machine-readable string composed of one to three period-separated integers, such as 10.14.1. The string can only contain numeric characters (0-9) and periods. не будет строиться на симуляторе

связь

В моем случае он запускал версию симулятора / ядра симулятора для 11 бета-версии по сравнению с версией для 10.1 -> Удаление и повторное открытие Xcode симулятора решило проблему.

Случилось и со мной, потратил почти целый день на поиски возможных причин.

Шаги, которые окончательно устранили проблему и позволили мне установить на симуляторе:

  1. Выйти из Xcode и симулятора iOS
  2. Удалите /Library/Developer (тот, что находится в корневом каталоге) или переименуйте его, если хотите сохранить резервную копию.
  3. Перезапустите Xcode, согласитесь с установкой инструментов командной строки
  4. Продолжайте работу с того места, на котором остановились :)

Помимо шагов, упомянутых в вопросе (полностью удалить Xcode 11, полностью удалить Xcode 10 и затем переустановить его), я также попытался клонировать проект в другом месте, просматривая все возможные места для получения производных данных, устанавливая другие среды выполнения симулятора и пробуя те . Ни один из них не работал, к счастью, приложение журнала консоли показало путь к процессу, который отклонил пакет приложения, это был один из двоичных файлов, установленных Xcode в /Library/Developer/PrivateFrameworks/CoreSimulator.framework.

Кажется, что Xcode 11 установил более новую версию фреймворков, и Xcode 10 не перезаписывал их. Удаление всей папки /Library/Developer вызвало установку инструментов командной строки, что, наконец, вернуло среду выполнения симулятора, которая правильно работала в Xcode 10.

Вы должны любить бета-версии :)

То же решение сработало и здесь. Я многократно удалял материалы, начиная с ~/Library/Developer/Xcode/Derived Data, и в конечном итоге для устранения проблемы потребовалось удалить основную папку /Library/Developer. Спасибо за ваше сообщение.

Brains 07.06.2019 19:27

Для меня он отлично работает после удаления этой папки: /Library/Developer Это связано с установкой Xcode 11

Ekambaram E 08.06.2019 09:09

Объединение ответов Sgeven.Zheng и Cristik.

ПРИЧИНА

При установке Xcode11 Beta устанавливается новая версия CoreSimulator.framework со следующим обновлением:

https://developer.apple.com/documentation/xcode_release_notes/xcode_11_beta_release_notes

"Bundles without a CFBundleVersion are invalid and can't be properly installed on devices or simulators. CoreSimulator now checks and rejects such bundles earlier in the process with a clearer error message. (49892531)"

Следующее не решит проблему:

  • Удаление бета-версии Xcode11
  • Удаление и переустановка Xcode 10

Это связано с тем, что CoreSimulator.framework установлен в /Library/Developer/PrivateFrameworks/CoreSimulator.framework, который находится вне пакета Xcode.app. При переустановке xcode10 обнаруживает, что текущая установленная версия CoreSimulator.framework новее, чем та, которую установил бы xcode10, поэтому оставляет ее как есть.

КРАТКОСРОЧНОЕ ИСПРАВЛЕНИЕ

  1. Удалить xcode11
  2. Установите Xcode 10 (не нужно переустанавливать, если он уже установлен)
  3. Удалить /Library/Developer/PrivateFrameworks/CoreSimulator.framework
  4. Запустите Xcode 10 и согласитесь установить инструменты командной строки.

ДОЛГОСРОЧНОЕ ИСПРАВЛЕНИЕ

Поскольку это не «настоящая» ошибка, а предполагаемое поведение Xcode11, в конечном итоге необходимо будет предпринять шаги, чтобы гарантировать, что приложения всегда создаются с допустимым CFBundleVersion.

Пожалуйста, смотрите мой комментарий для меньшего молотка, чтобы решить проблему в краткосрочной перспективе.

Jeremy Huddleston Sequoia 11.06.2019 06:22

Кажется, что первый шаг вообще не нужен. Просто удалите установленный CoreSimulator.framework и повторно запустите старую версию Xcode10.

valvoline 17.06.2019 12:05

Я тоже столкнулся с этой проблемой.

Мне не удалось попробовать некоторые другие варианты, представленные здесь, но я смог вернуться к созданию симулятора, просто удалив каталог /DerivedData.

Если вы не знаете, где его найти, просто сделайте следующее: Xcode -> Настройки -> Места и выберите стрелку рядом с путем для производных данных

Какой здесь дальнейший шаг? нажимаешь на стрелочку и что?

Jokz 29.12.2021 21:07
Ответ принят как подходящий

В ответах здесь много дезинформации, поэтому я хотел дать авторитетный ответ.

Проблема здесь в том, что новая версия CoreSimulator.framework с бета-версией Xcode 11 выполняет проверку CFBundleVersion, чего не делали предыдущие версии. Эти проверки действительны, и это представляет собой проблему в вашем приложении, но также есть ошибка в том, как проверки выполнялись в Xcode 11 Beta 1, что усугубляет проблему.

Во-первых, исправьте CFBundleVersion в вашем Info.plist. Он должен состоять только из цифр и до двух точек (т. е. ##.[.##[.##]], например: 12.4.2).

Во-вторых, после исправления CFBundleVersion вам нужно killall -9 CoreSimulatorBridge потому что старое значение, к сожалению, кэшируется в CoreSimulatorBridge, не позволяя ему распознавать новое значение. Эта часть была ошибкой, и она была устранена в Xcode 11 Beta 2.

Ошибка кэширования устранена в Xcode 11 Beta 2. Если вы все еще получаете сообщения об ошибках с Xcode 11 Beta 2 или более поздней версии, убедитесь, что вы действительно исправили Info.plist своего проекта;)

Jeremy Huddleston Sequoia 20.06.2019 18:00

Эээ... если я не ошибаюсь, CFBundleVersion - это "номер сборки", который больше похож на 123456, а не на 12.4.2. То, о чем вы говорите, представляет собой версию приложения и называется CFBundleShortVersionString в Info.plist.

RAM237 16.04.2020 18:58

В моем случае поле «Версия сборки» в моей цели было пустым, я изменил его на 1, и приложение смогло установиться.

В моем случае текстовые поля «Версия» и «Сборка» были пустыми. Я добавил 1.0 для поля «Версия» и 1 для поля «Сборка», и он отлично работает. Это решение, которое стоит попробовать перед удалением папки Library/Developer. Эта ошибка возникла у меня в Xcode 11.3 после слияния старой ветки.

MangoLassi 05.01.2020 00:54

В моем случае поле Версия сборки было пустым. Я добавил туда значение, но все равно это не сработало. Я попробовал команду killall -9 CoreSimulatorBridge, и это тоже не помогло. Наконец, когда я проверил xml файла info.plist (Открыть как -> Исходный код), ключ CFBundleVersion отсутствовал, а версия отображалась в файле info.plist через CFBundleShortVersionString.

Я просто добавил ключ CFBundleVersion, как указано ниже в info.plist, и это сработало.

<key>CFBundleVersion</key> <string>$(MARKETING_VERSION)</string>

Я надеюсь, что это поможет кому-то еще.

Я думаю, что правильное значение для CFBundleVersion должно быть $(CURRENT_PROJECT_VERSION), а CFBundleShortVersionString должно быть $(MARKETING_VERSION).

ThomasW 16.07.2020 07:17

Привет, я только что решил это: У меня в info.plist был только этот ключ:

<key>CFBundleShortVersionString</key>
<string>2.1</string>

... и так теперь все работает, добавив это:

<key>CFBundleVersion</key>
<string>2.1</string>

с симулятором, который снова работает....

ПРИМЕЧАНИЕ: без CFBundleVersion мое приложение отлично работало на физическом устройстве!!!

Я нашел это решение лучшим. Однако вам нужно будет убедиться, что ваша ОС является последней версией вместе с вашим Xcode - это было проблемой для меня.

Jokz 30.12.2021 18:27

Я пошел к целям и обнаружил, что поле «Версия» пусто, просто введите число, например 1.0

Вчера столкнулся с этой проблемой. Ситуация такова, что я вытащил свой код из git и попытался скомпилировать, после чего я не смогу запустить свое приложение на симуляторе (или заархивировать приложение для отправки в магазин приложений, номер версии не был помещен в информацию архива список, информация о версии отсутствует, как 1.3.4(123)). Сообщение об ошибке: CFbundleVersion настроен неправильно. Моя версия Xcode 11.4 (11E146).

поэтому я попытался следовать методу:

  1. Исправьте CFBundleVersion в вашем Info.plist (настройте правильный формат версии, числа или X.X.XX).

  2. измените идентификатор Bundle, например, добавьте префикс адреса com.example к com.example.test. Затем попробуйте скомпилировать и установить приложение на симуляторе. Прямо сейчас вы могли видеть, что приложение может быть установлено нормально.

  3. Затем измените идентификатор пакета на исходный, например com.example. Затем попробуйте еще раз, вы увидите, что можете нормально установить приложение на симуляторе или в архиве.

Если вы получите следующеетекущая ошибка.

(* см. прилагаемые скриншоты ниже)

Вот как вы можете решить эту проблему.

Делается в несколько шагов.

Шаг 1) Перейдите к навигатору проекта в Xcode.

Шаг 2) В инфо.plist.

Шаг 3) Добавьте * (Строка версий пакета, короткая) под (Bundle Version)

// Hint: Select the + sign to browse it if necessary .

Шаг 4) В поле Значение (Строка) добавьте версию, но на этот раз с десятичной точкой.

Поэтому, если (версия пакета) равна 4, обязательно добавьте к ней точку 4.0.

Шаг 5) Добейтесь успеха.

   Happy Coding :-)

В версии 12.0 Xcode beta 3 у меня постоянно возникала проблема с запуском симулятора. Я попробовал все вышеперечисленные методы. Ничего не сработало. Я решил, добавив это свойство в Info.plist: Строка версии пакета (короткая) и установка его значения на 1.0 См. изображение здесь

Я сталкивался с подобной проблемой часами, это то, что действительно сработало для меня.

  1. Перейдите в папку Ресурсы
  2. Найти Info.plist
  3. Добавьте пару ключ-значение: CFBundleShortVersionString:
  4. Чистая папка сборки
  5. Очистить кеш устройства
  6. Запускай и строй

Другие вопросы по теме