Когда я запускаю свое приложение с XCode, у меня вылетает, но нет ошибок
Приложение просто останавливается на этой теме
Что я могу сделать, чтобы получить дополнительную информацию о проблеме?
Ответы:
Если вы используете настраиваемые фреймворки, вам необходимо поместить его в раздел «Встроенные двоичные файлы», расположенный в проекте Xcode на вкладке Target / General.
По мне простой Clean
и Rebuild
разобрался. Надеюсь, поможет.
Это устранило добавление фреймворка во встроенный список бинарных активов. Вот как выглядит окончательная настройка стороннего фреймворка в графическом интерфейсе Xcode как Embedded Framework (Xcode 9.2, лично мне больше нравится визуальный след из хлебных крошек ;-)):
Неужели Apple намеренно разрушила среду выполнения, чтобы каким-то образом сообщить разработчику о проблеме, что вы не можете использовать фреймворки сторонних производителей в качестве просто связанных фреймворков при разработке iOS? Было бы лучше, если бы это появилось как ошибка сборки, я бы подумал ... с кнопкой, которая говорила "переместить!"
Использование встроенных двоичных файлов избавляет конечного пользователя от необходимости добавлять Framework независимо от вашего приложения (или от вас требуется установщик). В случае iPhone (iOS) это невозможно, но в MacOS это возможно, но может быстро стать беспорядочным.
Для конечного пользователя гораздо удобнее просто перетащить приложение, чтобы установить его на macOS, и именно здесь встроенное становится преимуществом. Встраивание также позволяет избежать классических «конфликтов DLL», когда требуется управлять внешними версиями вашей платформы. (дисковое пространство дешево, время моего клиента дорого).
Наконец решено!
Что сработало для меня, так это сделать фреймворк «необязательным» вместо «обязательного».
Надеюсь, это поможет!
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.
Guard Malloc
, чтобы быть правильным. Кто-нибудь знает, почему он исправляет вылет?
Чтобы ответить на исходный вопрос «Что я могу сделать, чтобы получить больше информации о проблеме?», Эта ветка форума Apple предлагает очень простой совет: просто запустите аварийное приложение вне XCode (т.е. остановите его из XCode, а затем запустите вручную на своем устройство). Это создаст журнал сбоев, содержащий более подробную информацию о том, что произошло. Затем вы можете просмотреть этот журнал в меню XCode Window / Devices and Simulators -> View Device Logs.
Я столкнулся с такой же проблемой с Xcode 11.3 и macOS Catalina 10.15.2. Приложение работало на устройстве, но не на симуляторе. Похоже, что есть проблема с Simulator, и временным решением является отключение Thread Sanitizer.
Обратитесь: https://forums.developer.apple.com/message/397978#397978
Надеюсь это поможет.
Я столкнулся с ошибкой с той же подписью (мой проект был на Obj-C) и обнаружил, что забыл связать с соответствующей структурой. Сообщение об ошибке в журнале отладки, которое привело к обнаружению ошибки, было:
dyld: символ не найден: _OBJC_CLASS _ $ _ SFSafariViewController
Для моей конкретной ошибки добавление SafariServices.framework в Targets -> Build Phases -> «Link Binary With Libraries» решило проблему. Хотя у вас, вероятно, нет такой же конкретной ошибки и разрешения, проверка журнала отладки на наличие подсказок полезна.
У меня была такая ситуация после обновления 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
Если вы используете фреймворк, написанный на Swift в приложении Objective-C, вам необходимо включить цепочку инструментов Swift в приложение, которое использует фреймворк.
Я нашел способ сделать это - создать в приложении фиктивный файл swift, чтобы XCode распознавал swift и соответствующим образом добавлял его в проект. Затем вы можете удалить фиктивный файл.
Мне бы хотелось, чтобы кто-нибудь знал лучший способ явно добавить swift в проект objective-c без добавления файла swift.
Я найду правильный способ решить эту проблему.
Убедитесь, что AppleWWDRCA.cer
установлен режим системы по умолчанию, тогда он будет работать:
Я столкнулся с той же проблемой. Установка для параметра «Всегда встраивать стандартные библиотеки Swift» значение «Да» в настройках сборки моей цели сработала для меня.
У меня была аналогичная проблема, которая была решена отсутствием спецификации разрешений в plist (как бы странно это ни было ...)
Я пытался использовать AVCaptureDevice, и он просто вылетел при запуске (мое приложение было очень минимальным)
Добавление -
Privacy - Camera Usage Description
чтобы info.plist
решить это для меня.
Также, если вы используете настраиваемые фреймворки, убедитесь, что вы установили тип Mach-O на статическую библиотеку. Я где-то читал, что IOS не позволяет дилиб. В любом случае это сработало для меня.
Чтобы добавить к длинному списку встреч с этой ошибкой, она возникает, когда я использую XCode12.2 Beta 2, развертываю на моем Mac под управлением MacOS 10.15.5 с целью развертывания, установленной на MacOS 11.0. Эта ситуация возникла, потому что я пробовал приложение Mac Catalyst Tutorial для добавления боковой панели. Переключение цели на MacOS 10.15.5 устранило ошибку и правильно запустило приложение.
Я исправил ошибку в своем проекте.
1. Проверьте другие темы, когда произошла ошибка. Я обнаружил, что моя ошибка связана с камерой.
У меня была такая же проблема, и причина, по которой она была связана с тем, что я отозвал свои сертификаты разработчика и создал новые с Xcode 10 после нового обновления macOS Mojave (для некоторых он удалил все учетные данные для входа и устарел некоторые сертификаты связки ключей).
Итак, все, что мне нужно было сделать, это удалить установленные приложения с моего устройства и снова запустить их через Xcode, чтобы он установил правильный новый профиль Provisioning Profile на моем устройстве :)
Иногда это происходит, когда вы используете системные фреймворки, которые доступны только из более поздней версии iOS, чем ваша целевая версия. Это можно исправить, отметив эту связанную структуру как необязательную.
Например, проект, ориентированный на iOS 11 и использующий AuthenticationServices для функции автозаполнения iOS 12, выйдет из строя на iOS 11 описанным способом.
На самом деле, у меня была проблема с 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, наконец, решает проблему.
Я столкнулся с этой проблемой только при работе на реальном устройстве (iPhone SE). На симуляторе проект работал как положено.
Я попробовал все исправления из этой же ветки, а отсюда: Библиотека OS X Framework не загружена: 'Изображение не найдено' Ни один из них не помог мне.
Для меня проблема решилась после перезагрузки iPhone (sic!).
Я сделал:
И это наконец работает. :)
Если любое другое решение не сработает, не забудьте попробовать его.
Я отсортировал его командой "pod install".