Xcode иногда удаляет связанную библиотеку - PullRequest
0 голосов
/ 24 января 2019

При использовании различных Frameworks в Xcode, компилятор и компоновщик иногда не включают этот Framework в библиотеку. Результатом является немедленный сбой во время запуска со следующим сообщением:

dyld: Library not loaded: /System/Library/Frameworks/UserNotifications.framework/UserNotifications
  Referenced from: /var/containers/Bundle/Application/1D41BD68-9B88-4D5D-B7AB-0D1C31979964/App.app/App
  Reason: image not found

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

UNNotificationRequest *unr = [UNNotificationRequest alloc];

Просто включение файла из этого фреймворка с #include <UserNotifications/UserNotifications.h> не исправляет его. Также не @import UserNotifications;

Я видел это с разными библиотеками в разных версиях xcode для разных версий ios.

Вот еще две проблемы, которые имеют более конкретный вариант использования:

1) CABTMidiCentralViewController, используемый в раскадровке, работает только при использовании ссылки на код

2) Переключение на Xcode 10 вызывает `UserNotifications.framekwor dyld: сбой библиотеки не загружен` для iOS 9

Кто-нибудь знает, почему это происходит? И как избежать этой тупой части кода, но все же связать / внедрить желаемую структуру?

приписка

  1. Я установил Always Embed Swift Standard Libraries на YES
  2. Я установил Link Frameworks Automatically на YES

Обновление # 1

Проблема с UserNotifications framework:

iOS9 и XCode 9 - РАБОТАЕТ

No crash on iOS9 with XCode9

iOS9 с XCode 10 - CRASH

Crash on iOS9 with XCode10

Использование симулятора:

iOS9 & XCode 10 Crashh - simulator

Использование реального устройства:

enter image description here

Обновление № 2

Не происходит сбой при изменении структуры с Required на Optional, но тогда push-уведомления не работают.

1 Ответ

0 голосов
/ 25 января 2019

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

...