Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

Если вы используете пользовательские фреймворки, вам нужно поместить их в раздел "Embedded Binaries", расположенный в проекте Xcode на вкладке Target/General.

Ответ 2

Для меня отсортированы простые Clean и Rebuild. Надеюсь, что это поможет.

Ответ 3

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

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

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

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

Ответ 4

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

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

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

Ответ 5

Я исправил ошибку в своем проекте только сейчас!
Если вы используете swift framework в проекте Object-C, я советую вам изменить настройки сборки.
Всегда встраивайте опцию Swift Standard Libraries в YES. как это: enter image description here

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

Ответ 6

Снятие флажка "Guard Malloc" в диагностике сработало у меня. See Image for settings

Ответ 7

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

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

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

Ответ 8

1) Продолжите выполнение, чтобы увидеть, не появляется ли какое-либо сообщение в отладчике, например, "MyFramework.framework" не найдено. Если это так, следуйте этому обсуждению: Библиотека OS X Framework не загружена: "Изображение не найдено" Для меня этот ответ сработал: fooobar.com/questions/16468/...

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

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

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

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

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

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

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

Ответ 9

Чтобы ответить на первоначальный вопрос "Что я могу сделать, чтобы получить больше информации о проблеме?", Эта ветка форума Apple предлагает очень простой совет: просто запустите приложение, вызывающее сбой, вне XCode (то есть остановите его в XCode, а затем запустите его вручную на своем компьютере). устройство). Это создаст журнал сбоев, содержащий более подробную информацию о том, что произошло. Затем вы можете просмотреть этот журнал из меню Окна XCode/Устройства и симуляторы → Просмотреть журналы устройств.

Ответ 10

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

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

Ответ 11

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

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

Мне бы очень понравилось, если бы кто-то знал о более эффективном способе быстрого добавления в проект Objective-C без добавления быстрого файла.

Ответ 12

Если вы используете каркас компоновки Carthage, после перетаскивания каркаса в свой проект вы должны добавить его в General/Embeded Binaries.

Ответ 13

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

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

enter image description here

Ответ 14

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

Ответ 15

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

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

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

Ответ 16

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

enter image description here

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

enter image description here

Ответ 17

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

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

Ответ 18

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

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

Ответ 19

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

Решено благодаря: fooobar.com/questions/314497/...

Ответ 20

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