dyld`__abort_with_payload: без сообщения об ошибке

86

Когда я запускаю свое приложение с XCode, у меня вылетает, но нет ошибок

Приложение просто останавливается на этой теме

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

Что я могу сделать, чтобы получить дополнительную информацию о проблеме?

Кевин АБРИОУКС
источник

Ответы:

107

Если вы используете настраиваемые фреймворки, вам необходимо поместить его в раздел «Встроенные двоичные файлы», расположенный в проекте Xcode на вкладке Target / General.

Маконовалов
источник
1
У меня есть собственный фреймворк, и он указан в разделе «Встроенные двоичные файлы» проекта Xcode в разделе «Цель> Общие». У меня все еще возникает эта проблема, когда я пытаюсь запустить свои модульные тесты. Недавно я обновил части своего кода Swift до Swift 3 (с 2). Если это поможет ...
Марио А. Гусман
@MarioAGuzman Как ты это исправил? Я также столкнулся с проблемой после миграции на Swift 3
iOS
@iOS К сожалению, настоящего решения у меня не было. Проблема решилась сама собой в только что выпущенном Xcode 8.3.
Марио Гусман
Почему это должно быть в разделе встроенных двоичных файлов? Я пытаюсь использовать ObjectiveDropboxOfficial.framework. Я получил эту ошибку, поместил ее в Embedded, и она «исправила» ее. Однако я вынул его снова, и он остается «исправленным». Другие цели, которые настроены так же, как AFAICT, не работают. В документации по установке Dropbox не говорится, что нужно вставлять Embedded Frameworks.
Джим Лиск
Это помогло. Также убедитесь, что у вас нет дубликатов в «Связанных платформах и библиотеках». Когда вы добавляете его в раздел Embedded, он автоматически добавляет его в раздел Linked.
milesmeow
60

По мне простой Cleanи Rebuildразобрался. Надеюсь, поможет.

FlixMa
источник
81
Очистить, очистить папку сборки, удалить содержимое папки с производными данными, установить Pod (где необходимо), перезапустить Xcode, перезагрузить компьютер; затем
намажьте
1
Мне тоже помогло !!
Дмитрий Грех
Удаление каталога и получение последнего коммита из git не помогли, но очистка и перестройка помогли lol
る ま る
8
В моем случае мне пришлось привязать чили и лимон к дверной коробке.
Нареш
1
Мне тоже пришлось пожертвовать своим первенцем, но это сработало!
Андор Немет,
26

введите описание изображения здесьЭта проблема появилась после обновления системы до бета-версии macOS 10.15.2. Отключение «Thread Sanitizer» решило проблему (Xcode 11.2). Теперь я не могу использовать Thread Sanitizer, и мне нужно ждать следующего обновления ОС.

Дмитрий Акимов
источник
6
Этот пост отвечает на исходные вопросы, когда проблема возникает в симуляторах Xcode 11.3 после обновления до Mac 10.15.2. Похоже на ошибку Apple, см. Forum.developer.apple.com/thread/126891
Vadim
19

Это устранило добавление фреймворка во встроенный список бинарных активов. Вот как выглядит окончательная настройка стороннего фреймворка в графическом интерфейсе Xcode как Embedded Framework (Xcode 9.2, лично мне больше нравится визуальный след из хлебных крошек ;-)): введите описание изображения здесь

Неужели Apple намеренно разрушила среду выполнения, чтобы каким-то образом сообщить разработчику о проблеме, что вы не можете использовать фреймворки сторонних производителей в качестве просто связанных фреймворков при разработке iOS? Было бы лучше, если бы это появилось как ошибка сборки, я бы подумал ... с кнопкой, которая говорила "переместить!"

Использование встроенных двоичных файлов избавляет конечного пользователя от необходимости добавлять Framework независимо от вашего приложения (или от вас требуется установщик). В случае iPhone (iOS) это невозможно, но в MacOS это возможно, но может быстро стать беспорядочным.

Для конечного пользователя гораздо удобнее просто перетащить приложение, чтобы установить его на macOS, и именно здесь встроенное становится преимуществом. Встраивание также позволяет избежать классических «конфликтов DLL», когда требуется управлять внешними версиями вашей платформы. (дисковое пространство дешево, время моего клиента дорого).

Чернюк
источник
Небольшое обновление. Xcode 10.1 теперь позволяет вам перетащить пользовательский фреймворк из раздела «Связать двоичный файл с библиотеками», где он идет по умолчанию, в раздел «Копировать ресурсы пакета», где он должен быть ... Он больше не просто копирует ссылку но перемещает и его.
Снимок
13

Я исправил ошибку в своем проекте только сейчас!
Если вы используете Swift framework в проекте Object-C, я советую вам изменить настройки сборки.
Всегда вставлять стандартные библиотеки Swift в ДА. как это:введите описание изображения здесь

надеюсь, что это было полезно для вас.

Хунбо Лю
источник
Это сработало для меня, даже если в моем проекте (по-видимому) нет быстрого кода.
Jim75
XCode изменился на значение обратно на Нет, и я забыл об этом. Спасибо :)
SeikoTheWiz
13

Наконец решено!

Что сработало для меня, так это сделать фреймворк «необязательным» вместо «обязательного».

Надеюсь, это поможет!

Эран Талмор
источник
супер человек, я боролся с этой проблемой 1,5 дня. даже нашел эту красивую матрицу twitter.com/isupportmatrix, заменив ее на требуемую, решено и на моей стороне
swift2geek
а также он работал только с настройкой в ​​File -> Project Settings-> Legacy build system
swift2geek
11

Xcode 11.1, выключите Do not Embed, Embed & Signэто вариант хороший.

0

222

Спасибо @mkonovalov, @William Cerniuk

черная жемчужина
источник
1
Работал у меня. +1
abhimuralidharan
1
На этом этапе в обязательном порядке вы пытаетесь встроить свою пользовательскую структуру в свое приложение.
Акаш Бхардвадж
6

1) Продолжите выполнение, чтобы увидеть, появляется ли какое-либо сообщение в отладчике, такое как "MyFramework.framework" not found. Если это так, следуйте этому обсуждению: Библиотека OS X Framework не загружена: «Изображение не найдено». Для меня этот ответ сработал: https://stackoverflow.com/a/44796734/4060763

2) Убедитесь, что вы добавили свои двоичные файлы через раздел «Вставить двоичные файлы».

3) Убедитесь, что вы включили подписание фреймворков в разделе фазы сборки.

4) Убедитесь, что встроенные фреймворки не являются символическими ссылками.

5) Вы можете сделать связанные фреймворки необязательными вместо обязательных на этапе «Связывание двоичного файла с библиотеками». Это укажет iOS не искать эти фреймворки во время запуска. Но в любом случае вам нужно исправить ошибки, чтобы использовать эти фреймворки!

6) Проверьте, все ли записи в info.plist в порядке. В моем случае я использовал файл Mac info.plist для iOS. Он искал какой-то xib-файл, которого нет в проекте iOS.

7) Выполняйте чистку и сборку после любого такого изменения. Это необходимо, потому что xcode не копирует / не изменяет эти файлы, если они уже существуют.

8) Удалите приложение с iPad, а затем установите. Причина та же, что и у 7.

крутоVick
источник
6

У меня сработало снятие отметки "Guard Malloc" в диагностике. См. Изображение для настроек

бесконечная петля
источник
2
Guard Malloc, чтобы быть правильным. Кто-нибудь знает, почему он исправляет вылет?
Mojo66 01
1
Вы также можете попробовать Очистить проект, а затем запустить его снова или просто перезапустить Xcode. Ошибки такого типа просто раздражают и похожи на ошибки в Xcode
Каранвир Сингх
5

Чтобы ответить на исходный вопрос «Что я могу сделать, чтобы получить больше информации о проблеме?», Эта ветка форума Apple предлагает очень простой совет: просто запустите аварийное приложение вне XCode (т.е. остановите его из XCode, а затем запустите вручную на своем устройство). Это создаст журнал сбоев, содержащий более подробную информацию о том, что произошло. Затем вы можете просмотреть этот журнал в меню XCode Window / Devices and Simulators -> View Device Logs.

Фред
источник
4

Я только что пропустил применение «Конфиденциальность - Описание использования камеры» в info.plist.

Не знаю, помогает ли эта информация кому-нибудь еще ...

Линус
источник
4

Я столкнулся с такой же проблемой с Xcode 11.3 и macOS Catalina 10.15.2. Приложение работало на устройстве, но не на симуляторе. Похоже, что есть проблема с Simulator, и временным решением является отключение Thread Sanitizer.

Обратитесь: https://forums.developer.apple.com/message/397978#397978

Надеюсь это поможет.

Панкадж Кулкарни
источник
3

Я столкнулся с ошибкой с той же подписью (мой проект был на Obj-C) и обнаружил, что забыл связать с соответствующей структурой. Сообщение об ошибке в журнале отладки, которое привело к обнаружению ошибки, было:

dyld: символ не найден: _OBJC_CLASS _ $ _ SFSafariViewController

Для моей конкретной ошибки добавление SafariServices.framework в Targets -> Build Phases -> «Link Binary With Libraries» решило проблему. Хотя у вас, вероятно, нет такой же конкретной ошибки и разрешения, проверка журнала отладки на наличие подсказок полезна.

user1825506
источник
2

У меня была такая ситуация после обновления Xcode до v10.2.1 и swift до v5.0. Если вы используете carthage + RxSwift, новый RxSwift использует RxRelay.framework. Вам следует перейти в каталог / Carthage / Build, найти этот фреймворк и перетащить его в свой проект. Не забудьте также добавить его в свой carthage copy-frameworksскрипт: $(SRCROOT)/Carthage/Build/iOS/RxRelay.framework

Решено благодаря: https://stackoverflow.com/a/52550148/2493555

Milczi
источник
1

Если вы используете фреймворк, написанный на Swift в приложении Objective-C, вам необходимо включить цепочку инструментов Swift в приложение, которое использует фреймворк.

Я нашел способ сделать это - создать в приложении фиктивный файл swift, чтобы XCode распознавал swift и соответствующим образом добавлял его в проект. Затем вы можете удалить фиктивный файл.

Мне бы хотелось, чтобы кто-нибудь знал лучший способ явно добавить swift в проект objective-c без добавления файла swift.

Markw
источник
1

Если вы используете платформу сборки Carthage, после перетаскивания ее в проект вы должны добавить ее в Общие / Встроенные двоичные файлы.

ответчик
источник
1

Я найду правильный способ решить эту проблему.

Убедитесь, что AppleWWDRCA.cerустановлен режим системы по умолчанию, тогда он будет работать:

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

Лео
источник
У меня тоже сработало.
dev_shanghai
1

Я столкнулся с той же проблемой. Установка для параметра «Всегда встраивать стандартные библиотеки Swift» значение «Да» в настройках сборки моей цели сработала для меня.

Арпит Панда
источник
1

У меня была аналогичная проблема, которая была решена отсутствием спецификации разрешений в plist (как бы странно это ни было ...)

Я пытался использовать AVCaptureDevice, и он просто вылетел при запуске (мое приложение было очень минимальным)

Добавление - Privacy - Camera Usage Description чтобы info.plistрешить это для меня.

Rock_Artist
источник
1

Также, если вы используете настраиваемые фреймворки, убедитесь, что вы установили тип Mach-O на статическую библиотеку. Я где-то читал, что IOS не позволяет дилиб. В любом случае это сработало для меня.

Майкл Риббонс
источник
1

Чтобы добавить к длинному списку встреч с этой ошибкой, она возникает, когда я использую XCode12.2 Beta 2, развертываю на моем Mac под управлением MacOS 10.15.5 с целью развертывания, установленной на MacOS 11.0. Эта ситуация возникла, потому что я пробовал приложение Mac Catalyst Tutorial для добавления боковой панели. Переключение цели на MacOS 10.15.5 устранило ошибку и правильно запустило приложение.

Стив Харрис
источник
0

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

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

  1. Добавьте конфиденциальность камеры в файл Info.plist.
    1) Откройте файл info.plist.
    2) Добавьте новый ключ под названием «Конфиденциальность - Описание использования камеры» и введите строку, описывающую, почему приложению нужна камера. Описания будут отображаться, когда вашему приложению потребуется использовать конфиденциальность.

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

Ван Ян
источник
0

У меня была такая же проблема, и причина, по которой она была связана с тем, что я отозвал свои сертификаты разработчика и создал новые с Xcode 10 после нового обновления macOS Mojave (для некоторых он удалил все учетные данные для входа и устарел некоторые сертификаты связки ключей).

Итак, все, что мне нужно было сделать, это удалить установленные приложения с моего устройства и снова запустить их через Xcode, чтобы он установил правильный новый профиль Provisioning Profile на моем устройстве :)

Фрэнк Ино
источник
0

Иногда это происходит, когда вы используете системные фреймворки, которые доступны только из более поздней версии iOS, чем ваша целевая версия. Это можно исправить, отметив эту связанную структуру как необязательную.

Например, проект, ориентированный на iOS 11 и использующий AuthenticationServices для функции автозаполнения iOS 12, выйдет из строя на iOS 11 описанным способом.

лазаревзубов
источник
0

На самом деле, у меня была проблема с 11.3.1, и Thread Sanitizer уже был отключен, как упоминалось выше. В моем случае проблема заключалась в том, что у меня были разные версии xCode в моей папке приложения, например

/Applications/xcode11.3.1/Xcode.app
/Applications/xcode11.3/Xcode.app
/Applications/xcode10.1/Xcode.app

и

/Applications/Xcode.app - was 11.2

Мне потребовалось 2 дня, чтобы понять, что система сборки по умолчанию смотрит на /Applications/Xcode.app. Таким образом, перенос 11.3.1 в /Applications/Xcode.app, наконец, решает проблему.

д.розумеенко
источник
0

Та же проблема произошла и со мной. У меня была бета-версия iOS 14, и проблема была исправлена, когда я обновил ее до официальной версии.

Даката
источник
-1

Я столкнулся с этой проблемой только при работе на реальном устройстве (iPhone SE). На симуляторе проект работал как положено.

Я попробовал все исправления из этой же ветки, а отсюда: Библиотека OS X Framework не загружена: 'Изображение не найдено' Ни один из них не помог мне.

Для меня проблема решилась после перезагрузки iPhone (sic!).

Я сделал:

  • чистая папка сборки,
  • чистые производные данные,
  • удалить приложение с устройства,
  • перезагрузите устройство

И это наконец работает. :)

Если любое другое решение не сработает, не забудьте попробовать его.

вандермезис
источник
-3

Я отсортировал его командой "pod install".

Амандип Сингх
источник