Ответы:
Для меня ни одно из предыдущих решений не сработало. Мы обнаружили, что ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
в настройках сборки есть флаг (в более ранних версиях: «Встроенный контент содержит код Swift»), для которого необходимо установить значение YES. Это было НЕТ по умолчанию!
Эта ошибка может возникать, если во время преобразования проекта Objective-C в программу Swift что-то пошло не так. Проблема в том, что параметры сборки Linker никогда не были настроены должным образом, поэтому вам придется делать это вручную. Найдите параметр сборки Runpath Search Paths и установите для него:
$(inherited) @executable_path/Frameworks
РЕДАКТИРОВАТЬ: Я должен также добавить, что в последнее время был поток этих ошибок, вызванных чем-то совершенно другим - Apple внесла изменения в самом Swift, начиная, возможно, с Xcode 6.1 или 6.1.1. Похоже, единственное решение состоит в том, чтобы выйти из XCode, уничтожить ваши сертификаты в Keychain Access, перейти в Member Center и удалить все сертификаты и профили (кроме профилей для приложений в Магазине - вы не можете удалить их), а затем запустить весь процесс запроса сертификата с нуля.
Я не совсем уверен, почему этот вопрос опровергается, у меня тоже была эта проблема, когда я впервые попытался использовать Swift с существующим проектом. Перезапуск Xcode также исправил это для меня.
Я долго искал по этому вопросу. Есть несколько причин, вызывающих эту проблему.
Если вы сталкиваетесь с тем, когда вы и Swift-код / библиотека в проекте Objectice C, вам следует попробовать Решение 1-2-3
Если вы столкнулись с этой проблемой с новым проектом Swift, Solution 4 подойдет вам лучше всего.
Перезагрузите Xcode, затем компьютер и iPhone
Перейти к настройкам сборки проекта и установить Always Embed Swift Standard Libraries
(ранее Embedded Content Contains Swift Code
) флагYES
Зайдите в настройки сборки проекта и добавьте @executable_path/Frameworks
в Runpath Search Paths
опцию
Если ничего из вышеперечисленного не работает, это должно. Apple, кажется, патчи сертификаты ниндзя, как упомянуто в сообщении AirSign
На InHouse сертификаты
Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, O=Company Name, C=FR
они добавили новое поле с именем OU
Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, OU=269J2W3P2L, O=Company Name, C=FR
поэтому вы должны просто восстановить сертификат и предоставление
@executable_path/../Frameworks
где проекты iOS требуют этого без ..
в середине. Изменение этого значения важно, если вы преобразовали цель из одной ОС в другую.
В моем случае я пытался импортировать пользовательский фреймворк и получал похожую ошибку. Оказывается, мне пришлось импортировать фреймворк во встроенные двоичные файлы, а не в связанные фреймворки и библиотеки.
Встроенные двоичные файлы находятся в разделе «Настройки проекта» -> -> «Общие».
Для разработчиков, у которых была эта проблема с дистрибутивами Adhoc / Enterprise,
Создайте производственный сертификат на портале dev, а затем заново создайте профиль распространения. Загрузите и установите их на свой Mac. Убедитесь, что вы выбрали правильный профиль в настройках сборки XCode и перестройте приложение.
Источник: https://devforums.apple.com/message/1022908#1022908
Решение 5:
В моем случае все решения, упомянутые в ответе на рассылку, были очень полезными, но ни одно из них не сработало. Я решил свою проблему, добавив свою быструю библиотеку в раздел «Встроенные двоичные файлы» в разделе «Общие» цели моего проекта. Может быть, это связано с тем, что я включил мой быстрый фреймворк в мое рабочее пространство? Что бы это ни собиралось сейчас! Готовься, Свифт, я здесь!
Для меня проблема была связана с тем, что мой центр сертификации отношений с разработчиками Apple Worldwide недействителен.
Загрузите его отсюда: https://developer.apple.com/certificationauthority/AppleWWDRCA.cer.
Перетащите его в Keychain Access, очистите проект и запустите.
У меня был проект Obj-C, где я начал добавлять быстрые исходные файлы. Следующее исправило проблему для меня:
RUNPATH SEARCH PATHS = $(inherited) @executable_path/Frameworks
EMBEDDED CONTENT CONTAINS SWIFT = YES
Я только что создал новый проект из шаблонов Xcode 6.3 и сравнил настройки проекта со своим старым оригинальным проектом.
Попробуйте удерживать Alt, затем перейдите в Product -> Clean Build Folder ...
Надеюсь, это поможет кому-то ..
Причин для этого много. Проведя веселые выходные в поисках еще одной проблемы, вызывающей эту проблему (порядок подписания кода), я хотел создать краткий ответ, объединяющий все возможные решения:
DerivedData
и Build
каталоги. Посмотрите в настройках для местоположения DerivedData
. Build
должен быть в папке вашего проекта.@executable_path/Frameworks
. Это легко. Если вы делаете свою собственную сборку командной строки, вы можете создавать свои собственные .ipa
файлы для загрузки. В этом случае вам необходимо обеспечить следующее:
SwiftSupport/iphoneos
совпадает с версией в.Contents/YourApp.app/Frameworks
Поскольку Swift еще не совместим между версиями в двоичном формате, вы должны убедиться, что эти версии являются теми, для которых вы создали свое приложение. Вы можете найти эти библиотеки в /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos
.codesign
библиотеки и файлы инфраструктуры ( Frameworks
в .app
папке), а затем подписать все .app
дерево. .app
Дерево должно быть подписано с , entitlements.plist
но не в рамках.Надеемся, что когда выйдет Swift 3.0 и нам больше не понадобится связывать Swift с нашими приложениями, вся эта проблема исчезнет.
У меня была эта проблема с использованием специального мобильного (или корпоративного) мобильного решения с производственным сертификатом. Переход на сертификат развития и mobileprovision решил проблему.
Мой проект - проект Swift с некоторыми классами Objective-C. У меня была такая же проблема при подписании со старым сертификатом inHouse (enterprise).
Следующие шаги исправили это для меня.
Runpath Search Paths
настройки сборки на: $(inherited) @executable_path/Frameworks
. Решение 6:
В нашем случае сертификат распространения предприятия был аннулирован. Создание нового сертификата и обновление профиля обеспечения решило проблему.
(Кажется, есть много разных причин этой ошибки. Надеюсь, это кому-нибудь поможет.)
Я столкнулся с той же самой проблемой, установив правильную идентификацию знака кода, решил проблему (Настройки сборки-> Идентификация подписи кода).
Согласно техническому вопросу Apple «Все корпоративные и стандартные сертификаты разработчика iOS, созданные после выпуска iOS 8, имеют новое поле Team ID в надлежащем месте для запуска приложений на языке Swift»
Если вы добавите три фреймворка через встроенные двоичные файлы, они также будут добавлены в связанные фреймворки и библиотеки. Удаление трех записей в связанных фреймворках и библиотеках решит проблему.
Магические методы, такие как перезапуск Xcode и перезагрузка Mac, не работают на меня.
Обновление до последней версии OS X (Yosemite)
После нескольких часов проб и ошибок я пришел к решению этой проблемы. - Если это относится к вашему случаю, конечно.
У меня была такая же проблема, пока я не обновил свой Mac OS X с Mavericks до Yosemite. - Это исправило мою проблему, надеюсь, это исправит и вашу
Я перепробовал все решения, найденные в сети, в том числе для Apple и новые сертификаты. Безуспешно.
Единственный способ запустить xcode после 6 месяцев попыток - создать новую учетную запись на моем macbook.
Обычно эта ошибка исчезает, если вы добавляете эту библиотеку в сегмент «Копирование файлов» на этапах сборки.
Ни одно из этих решений, казалось, не работало для меня постоянно; после каждой пары успешных запусков это снова не получится. Для меня флаг «Внедренный контент содержит Swift Code» всегда был установлен на YES.
Оказывается, я бы установил Xcode на 6,3-совместимый. Изменение обратно на 3.2-совместимое решило это:
Это обнаружилось, когда я добавил новую цель расширения Today с языком Swift в старый проект. Исправлено легко путем обновления проекта до рекомендуемых настроек. Xcode 6.0.1
Я получил ту же проблему, используя Mavericks, Xcode 6.1.1, тестирование на iPhone5 с iOS 8.1.1. Я перепробовал все возможные решения, включая новые сертификаты и профили обеспечения, но ничего не помогло. Я сделал изменения Embedded Content Contains Swift Code
иRunpath Search Paths
на уровне проекта, и на уровне цели.
Я сейчас установил Yosemite, и без каких-либо дальнейших изменений он начал работать.
Та же самая проблема здесь, для меня это была Crashlytics / Fabric / Beta / Twitter / Независимо от того, что они сами называют загрузкой двоичного файла, в котором отсутствовали встроенные фреймворки. Если я сделал архив, а затем экспортировал сборку Enterprise стандартным способом, они сработали.
otool