Если вы используете настраиваемые фреймворки, вам необходимо поместить его в раздел «Встроенные двоичные файлы», расположенный в проекте Xcode на вкладке Target / General.
У меня есть собственный фреймворк, и он указан в разделе «Встроенные двоичные файлы» проекта 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разобрался. Надеюсь, поможет.
Очистить, очистить папку сборки, удалить содержимое папки с производными данными, установить Pod (где необходимо), перезапустить Xcode, перезагрузить компьютер; затем
намажьте
1
Мне тоже помогло !!
Дмитрий Грех
Удаление каталога и получение последнего коммита из git не помогли, но очистка и перестройка помогли lol
る ま る
8
В моем случае мне пришлось привязать чили и лимон к дверной коробке.
Нареш
1
Мне тоже пришлось пожертвовать своим первенцем, но это сработало!
Андор Немет,
26
Эта проблема появилась после обновления системы до бета-версии macOS 10.15.2. Отключение «Thread Sanitizer» решило проблему (Xcode 11.2). Теперь я не могу использовать Thread Sanitizer, и мне нужно ждать следующего обновления ОС.
Этот пост отвечает на исходные вопросы, когда проблема возникает в симуляторах 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 в ДА. как это:
супер человек, я боролся с этой проблемой 1,5 дня. даже нашел эту красивую матрицу twitter.com/isupportmatrix, заменив ее на требуемую, решено и на моей стороне
swift2geek
а также он работал только с настройкой в File -> Project Settings-> Legacy build system
swift2geek
11
Xcode 11.1, выключите Do not Embed, Embed & Signэто вариант хороший.
2) Убедитесь, что вы добавили свои двоичные файлы через раздел «Вставить двоичные файлы».
3) Убедитесь, что вы включили подписание фреймворков в разделе фазы сборки.
4) Убедитесь, что встроенные фреймворки не являются символическими ссылками.
5) Вы можете сделать связанные фреймворки необязательными вместо обязательных на этапе «Связывание двоичного файла с библиотеками». Это укажет iOS не искать эти фреймворки во время запуска. Но в любом случае вам нужно исправить ошибки, чтобы использовать эти фреймворки!
6) Проверьте, все ли записи в info.plist в порядке. В моем случае я использовал файл Mac info.plist для iOS. Он искал какой-то xib-файл, которого нет в проекте iOS.
7) Выполняйте чистку и сборку после любого такого изменения. Это необходимо, потому что xcode не копирует / не изменяет эти файлы, если они уже существуют.
8) Удалите приложение с iPad, а затем установите. Причина та же, что и у 7.
Guard Malloc, чтобы быть правильным. Кто-нибудь знает, почему он исправляет вылет?
Mojo66 01
1
Вы также можете попробовать Очистить проект, а затем запустить его снова или просто перезапустить Xcode. Ошибки такого типа просто раздражают и похожи на ошибки в Xcode
Каранвир Сингх
5
Чтобы ответить на исходный вопрос «Что я могу сделать, чтобы получить больше информации о проблеме?», Эта ветка форума Apple предлагает очень простой совет: просто запустите аварийное приложение вне XCode (т.е. остановите его из XCode, а затем запустите вручную на своем устройство). Это создаст журнал сбоев, содержащий более подробную информацию о том, что произошло. Затем вы можете просмотреть этот журнал в меню XCode Window / Devices and Simulators -> View Device Logs.
Я столкнулся с такой же проблемой с Xcode 11.3 и macOS Catalina 10.15.2. Приложение работало на устройстве, но не на симуляторе. Похоже, что есть проблема с Simulator, и временным решением является отключение Thread Sanitizer.
Я столкнулся с ошибкой с той же подписью (мой проект был на 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
Если вы используете фреймворк, написанный на Swift в приложении Objective-C, вам необходимо включить цепочку инструментов Swift в приложение, которое использует фреймворк.
Я нашел способ сделать это - создать в приложении фиктивный файл swift, чтобы XCode распознавал swift и соответствующим образом добавлял его в проект. Затем вы можете удалить фиктивный файл.
Мне бы хотелось, чтобы кто-нибудь знал лучший способ явно добавить swift в проект objective-c без добавления файла swift.
Я столкнулся с той же проблемой. Установка для параметра «Всегда встраивать стандартные библиотеки Swift» значение «Да» в настройках сборки моей цели сработала для меня.
Также, если вы используете настраиваемые фреймворки, убедитесь, что вы установили тип Mach-O на статическую библиотеку. Я где-то читал, что IOS не позволяет дилиб. В любом случае это сработало для меня.
Чтобы добавить к длинному списку встреч с этой ошибкой, она возникает, когда я использую XCode12.2 Beta 2, развертываю на моем Mac под управлением MacOS 10.15.5 с целью развертывания, установленной на MacOS 11.0. Эта ситуация возникла, потому что я пробовал приложение Mac Catalyst Tutorial для добавления боковой панели. Переключение цели на MacOS 10.15.5 устранило ошибку и правильно запустило приложение.
Я исправил ошибку в своем проекте.
1. Проверьте другие темы, когда произошла ошибка. Я обнаружил, что моя ошибка связана с камерой.
Добавьте конфиденциальность камеры в файл Info.plist.
1) Откройте файл info.plist.
2) Добавьте новый ключ под названием «Конфиденциальность - Описание использования камеры» и введите строку, описывающую, почему приложению нужна камера. Описания будут отображаться, когда вашему приложению потребуется использовать конфиденциальность.
У меня была такая же проблема, и причина, по которой она была связана с тем, что я отозвал свои сертификаты разработчика и создал новые с Xcode 10 после нового обновления macOS Mojave (для некоторых он удалил все учетные данные для входа и устарел некоторые сертификаты связки ключей).
Итак, все, что мне нужно было сделать, это удалить установленные приложения с моего устройства и снова запустить их через Xcode, чтобы он установил правильный новый профиль Provisioning Profile на моем устройстве :)
Иногда это происходит, когда вы используете системные фреймворки, которые доступны только из более поздней версии iOS, чем ваша целевая версия. Это можно исправить, отметив эту связанную структуру как необязательную.
Например, проект, ориентированный на iOS 11 и использующий AuthenticationServices для функции автозаполнения iOS 12, выйдет из строя на iOS 11 описанным способом.
На самом деле, у меня была проблема с 11.3.1, и Thread Sanitizer уже был отключен, как упоминалось выше. В моем случае проблема заключалась в том, что у меня были разные версии xCode в моей папке приложения, например
Мне потребовалось 2 дня, чтобы понять, что система сборки по умолчанию смотрит на /Applications/Xcode.app. Таким образом, перенос 11.3.1 в /Applications/Xcode.app, наконец, решает проблему.
По мне простой
Clean
иRebuild
разобрался. Надеюсь, поможет.источник
Эта проблема появилась после обновления системы до бета-версии macOS 10.15.2. Отключение «Thread Sanitizer» решило проблему (Xcode 11.2). Теперь я не могу использовать Thread Sanitizer, и мне нужно ждать следующего обновления ОС.
источник
Это устранило добавление фреймворка во встроенный список бинарных активов. Вот как выглядит окончательная настройка стороннего фреймворка в графическом интерфейсе Xcode как Embedded Framework (Xcode 9.2, лично мне больше нравится визуальный след из хлебных крошек ;-)):
Неужели Apple намеренно разрушила среду выполнения, чтобы каким-то образом сообщить разработчику о проблеме, что вы не можете использовать фреймворки сторонних производителей в качестве просто связанных фреймворков при разработке iOS? Было бы лучше, если бы это появилось как ошибка сборки, я бы подумал ... с кнопкой, которая говорила "переместить!"
Использование встроенных двоичных файлов избавляет конечного пользователя от необходимости добавлять Framework независимо от вашего приложения (или от вас требуется установщик). В случае iPhone (iOS) это невозможно, но в MacOS это возможно, но может быстро стать беспорядочным.
Для конечного пользователя гораздо удобнее просто перетащить приложение, чтобы установить его на macOS, и именно здесь встроенное становится преимуществом. Встраивание также позволяет избежать классических «конфликтов DLL», когда требуется управлять внешними версиями вашей платформы. (дисковое пространство дешево, время моего клиента дорого).
источник
Я исправил ошибку в своем проекте только сейчас!
Если вы используете Swift framework в проекте Object-C, я советую вам изменить настройки сборки.
Всегда вставлять стандартные библиотеки Swift в ДА. как это:
надеюсь, что это было полезно для вас.
источник
Наконец решено!
Что сработало для меня, так это сделать фреймворк «необязательным» вместо «обязательного».
Надеюсь, это поможет!
источник
Xcode 11.1, выключите
Do not Embed
,Embed & Sign
это вариант хороший.Спасибо @mkonovalov, @William Cerniuk
источник
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" в диагностике.
источник
Guard Malloc
, чтобы быть правильным. Кто-нибудь знает, почему он исправляет вылет?Чтобы ответить на исходный вопрос «Что я могу сделать, чтобы получить больше информации о проблеме?», Эта ветка форума Apple предлагает очень простой совет: просто запустите аварийное приложение вне XCode (т.е. остановите его из XCode, а затем запустите вручную на своем устройство). Это создаст журнал сбоев, содержащий более подробную информацию о том, что произошло. Затем вы можете просмотреть этот журнал в меню XCode Window / Devices and Simulators -> View Device Logs.
источник
Я только что пропустил применение «Конфиденциальность - Описание использования камеры» в info.plist.
Не знаю, помогает ли эта информация кому-нибудь еще ...
источник
Я столкнулся с такой же проблемой с 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.
источник
Если вы используете платформу сборки Carthage, после перетаскивания ее в проект вы должны добавить ее в Общие / Встроенные двоичные файлы.
источник
Я найду правильный способ решить эту проблему.
Убедитесь, что
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. Проверьте другие темы, когда произошла ошибка. Я обнаружил, что моя ошибка связана с камерой.
1) Откройте файл info.plist.
2) Добавьте новый ключ под названием «Конфиденциальность - Описание использования камеры» и введите строку, описывающую, почему приложению нужна камера. Описания будут отображаться, когда вашему приложению потребуется использовать конфиденциальность.
источник
У меня была такая же проблема, и причина, по которой она была связана с тем, что я отозвал свои сертификаты разработчика и создал новые с 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, наконец, решает проблему.
источник
Та же проблема произошла и со мной. У меня была бета-версия iOS 14, и проблема была исправлена, когда я обновил ее до официальной версии.
источник
Я столкнулся с этой проблемой только при работе на реальном устройстве (iPhone SE). На симуляторе проект работал как положено.
Я попробовал все исправления из этой же ветки, а отсюда: Библиотека OS X Framework не загружена: 'Изображение не найдено' Ни один из них не помог мне.
Для меня проблема решилась после перезагрузки iPhone (sic!).
Я сделал:
И это наконец работает. :)
Если любое другое решение не сработает, не забудьте попробовать его.
источник
Я отсортировал его командой "pod install".
источник