tl;dr
Связывание вашей встроенной платформы с другой платформой и отсутствие связи другой платформы с вашим приложением приводит к required code signature missing
при сборке и запуске на устройстве.
описание:
Настройка:
Моя установка довольно проста (Swift 2.3 и Xcode Xcode 8.0; версия сборки 8S162m):
- Используя Carthage (0.17.2), я создал Other.framework с
xcodebuild
8.0 иTOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 carthage build --platform iOS
- В MyApp встроен My.framework.
- Приложение и проекты фреймворка находятся в одной рабочей области Xcode.
- Я связал Other.framework ТОЛЬКО с My.framework (это означает, что MyApp не связан с Other.framework strong > вообще). Дело в том, что MyApp не обязательно использовать API Other.framework.
Проблема:
Кажется, все работает нормально, пока я не соберу и не запустил приложение на устройстве. Приложение запущено, а затем процесс прерывается со следующей ошибкой Xcode:
dyld: Library not loaded: @rpath/Other.framework/Other
Referenced from: /private/var/containers/Bundle/Application/DCF0331F-FF23-43CF-AE79-B3857D5A6EE3/MyApp.app/Frameworks/My.framework/My
Reason: no suitable image found. Did find:
/private/var/containers/Bundle/Application/DCF0331F-FF23-43CF-AE79-B3857D5A6EE3/MyApp.app/Frameworks/My.framework/Frameworks/Other.framework/Other: required code signature missing for '/private/var/containers/Bundle/Application/DCF0331F-FF23-43CF-AE79-B3857D5A6EE3/MyApp.app/Frameworks/My.framework/Frameworks/Other.framework/Other'
Я проверил подпись Other.framework, и мне все понравилось. Кроме того,
Решение (временное решение)
Свяжите MyApp с Other.framework. Ужасно ... Это кажется сломанным.
Связывание того же двоичного файла Other.framework с MyApp и решение проблемы таким образом указывает на то, что Other.framework создан нормально и может быть переподписанным правильно. Возможно, никакого отношения к Карфагену.
ПРИМЕЧАНИЕ. Существует аналогичная проблема платформа iOS 8+ с вложенной встроенной структурой, однако моя имеет несколько другую причину.