dyld: библиотека не загружена: @ rpath / libswift_stdlib_core.dylib

205

Я получаю эту ошибку после добавления класса Swift в старый проект XCode.

dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib

Как я могу снова запустить проект?

Антон
источник
Вы также можете посмотреть на stackoverflow.com/questions/38364320, где показано, как отлаживать это с помощьюotool
Джим Хейс,
2017 год - невероятно, просто перезапуск XCode решил эту отвратительную проблему для меня.
Толстяк

Ответы:

152

Для меня ни одно из предыдущих решений не сработало. Мы обнаружили, что ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIESв настройках сборки есть флаг (в более ранних версиях: «Встроенный контент содержит код Swift»), для которого необходимо установить значение YES. Это было НЕТ по умолчанию!

mukaissi
источник
Это исправило и меня, я изменил настройку расширения на true. Проект является объективным, но он быстрый и не сработал с самого начала
Cristi Băluță
Это было и мое решение. У меня есть существующий проект приложения для iOS (ObjC), к которому я добавляю расширение Today (новая цель в проекте, расширение является плагином для основного приложения). Мне нужно было зайти в настройки цели приложения и разрешить проблему «Настройка сборки» и «Альт ...». Имеет смысл, но, учитывая, сколько других вещей Xcode 6.0 автоматически настраивает для вас, обидно, что эта важная опция была упущена.
hsoi
Это исправило мою проблему - у нас был старый проект с большим количеством ObjC, к которому мы недавно начали добавлять Swift. Несмотря на то, что IPA была собрана и включала библиотеки Swift, она не работала на некоторых устройствах iOS7, пока этот параметр сборки не был проверен, и мы не сделали новый IPA. Это работало на всех наших проблемных устройствах.
Кендалл Хельмштеттер Гелнер
1
Ничто не сработало, кроме этого. Ты чудак, мой добрый сэр!
Рики Хартманн
2
Встроенный контент содержит код Swift, который не рекомендуется использовать ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
nivritgupta
91

Эта ошибка может возникать, если во время преобразования проекта Objective-C в программу Swift что-то пошло не так. Проблема в том, что параметры сборки Linker никогда не были настроены должным образом, поэтому вам придется делать это вручную. Найдите параметр сборки Runpath Search Paths и установите для него:

$(inherited) @executable_path/Frameworks

введите описание изображения здесь

РЕДАКТИРОВАТЬ: Я должен также добавить, что в последнее время был поток этих ошибок, вызванных чем-то совершенно другим - Apple внесла изменения в самом Swift, начиная, возможно, с Xcode 6.1 или 6.1.1. Похоже, единственное решение состоит в том, чтобы выйти из XCode, уничтожить ваши сертификаты в Keychain Access, перейти в Member Center и удалить все сертификаты и профили (кроме профилей для приложений в Магазине - вы не можете удалить их), а затем запустить весь процесс запроса сертификата с нуля.

матовый
источник
3
Работал на меня. Обновлен до последней версии XCode и обнаружил, что этот путь установки в моем проекте приводил к более старой версии.
ObjectiveTC
1
работал!! ты спас мой день! Я использовал быстрый контроль GitHub в цели C с xcode 6 GM. Спасибо.
imthegiga
1
Это сработало и для меня. Перезапуска Xcode не было.
Дэн Левенхерц,
1
работал на меня. Кстати, я получил «Причина: изображение не найдено» в конце сообщения об ошибке.
Питер Чжоу
2
Слава Богу! Там это было!
BoilingLime
79

Я не совсем уверен, почему этот вопрос опровергается, у меня тоже была эта проблема, когда я впервые попытался использовать Swift с существующим проектом. Перезапуск Xcode также исправил это для меня.

Адам Фокс
источник
20
Я пытаюсь использовать swift в новом проекте iOS и получаю эту ошибку при попытке запустить на устройстве iOS 8, но не в симуляторе. Перезапуск Xcode, моего ноутбука или телефона не решает проблему. Есть ли другое решение?
Дэвид Скрундз
2
К сожалению, это не сработало для меня в Beta 4, когда я пытался запустить приложение Mac, использующее среду на основе Swift.
Крейг Отис
Пожалуйста, включите ссылку @Developer в ваш ответ, потому что это действительно помогает.
Лачезар Тодоров
Попробуйте это, но добавьте в чистоту.
Скотт Маккензи
55

Я долго искал по этому вопросу. Есть несколько причин, вызывающих эту проблему.

Если вы сталкиваетесь с тем, когда вы и Swift-код / ​​библиотека в проекте Objectice C, вам следует попробовать Решение 1-2-3

Если вы столкнулись с этой проблемой с новым проектом Swift, Solution 4 подойдет вам лучше всего.

Решение 1:

Перезагрузите Xcode, затем компьютер и iPhone

Решение 2:

Перейти к настройкам сборки проекта и установить Always Embed Swift Standard Libraries(ранее Embedded Content Contains Swift Code) флагYES

Решение 3:

Зайдите в настройки сборки проекта и добавьте @executable_path/Frameworksв Runpath Search Pathsопцию

Решение 4:

Если ничего из вышеперечисленного не работает, это должно. 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

поэтому вы должны просто восстановить сертификат и предоставление

accfews
источник
1
Объявление 2: теперь оно называется «ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES» (см. Комментарий ниже принятого ответа).
Рафаэль
1
Я хотел добавить ... проекты MacOS требуют, @executable_path/../Frameworksгде проекты iOS требуют этого без ..в середине. Изменение этого значения важно, если вы преобразовали цель из одной ОС в другую.
Мэтт Галлахер
41

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

Встроенные двоичные файлы находятся в разделе «Настройки проекта» -> -> «Общие».

C0D3
источник
Спас мой день! Потрясающие!
Клаас
1
Я видел эту ошибку, когда пытался использовать скомпилированный фреймворк, написанный на swift (вместо встраивания исходных файлов в качестве отдельной цели). Вышеупомянутое решение сработало и для меня.
Алекс да Франка
Огромное спасибо, спас мой полный день.
Бадринат
1
Сработал для меня после попытки связать структуру, частично написанную на swift, в старый проект, который был полностью объективным. Настройка была на самом деле под настройками сборки, хотя. Более подробная информация здесь: stackoverflow.com/questions/24163870/…
Пеллет
Это в настройках Target, а не Project, просто чтобы быть уверенным.
Legoless
16

Для разработчиков, у которых была эта проблема с дистрибутивами Adhoc / Enterprise,

Создайте производственный сертификат на портале dev, а затем заново создайте профиль распространения. Загрузите и установите их на свой Mac. Убедитесь, что вы выбрали правильный профиль в настройках сборки XCode и перестройте приложение.

Источник: https://devforums.apple.com/message/1022908#1022908

easthelper
источник
Хотя эта ссылка может ответить на вопрос, ссылки ломаются. Таким образом, рекомендуется включить ключевые части из ссылки. Ответы только на ссылки не рекомендуются.
Pokechu22
Работал для моего корпоративного приложения. Спасибо!
Сильванаар
15

Решение 5:

В моем случае все решения, упомянутые в ответе на рассылку, были очень полезными, но ни одно из них не сработало. Я решил свою проблему, добавив свою быструю библиотеку в раздел «Встроенные двоичные файлы» в разделе «Общие» цели моего проекта. Может быть, это связано с тем, что я включил мой быстрый фреймворк в мое рабочее пространство? Что бы это ни собиралось сейчас! Готовься, Свифт, я здесь!

Chrstph SLN
источник
ОК, это похоже на работу. Я просто пытаюсь написать библиотеку быстрого кода для быстрого проекта. Почему-то мне все еще интересно, правильно ли это. Однако я в восторге от его работы.
kpierce8
Я включил свои фреймворки в раздел «Копирование фреймворков» на вкладке «Фазы сборки», но одну фреймворк здесь не удалось выбрать. «Общие» позволили выбрать этот другой фреймворк и добавили его в фазы сборки, а приложение создает и запускает. Как ни странно, я все еще мог запустить приложение на симуляторе.
DJBP
Спасибо, Кристоф. Как и вы, перепробовал все решения, и было явно не интуитивно понятно, что быструю библиотеку нельзя просто перетащить в один проект. Вам явно нужно поместить библиотеку во встроенный раздел (более понятный модуль swift, я сомневаюсь, что могут быть другие типы встроенных компонентов). Даже если XCode может автоматически обнаружить это автоматически и сделать эту работу за нас ... Но это не задача нашего любимого XCode;), безусловно, здесь, чтобы тратить наше время впустую ...
Мистер Бонжур
Кроме того, если библиотека уже есть в списке, убедитесь, что она помечена как «Вставить и подписать». Это исправляет мою проблему.
SquareBox
10

Простой перезапуск Xcode решил проблему для меня.

Антон
источник
Я собираюсь дать пощечину следующему фанату Apple, который высмеивает перезагрузку Windows
Джош
5

Для меня проблема была связана с тем, что мой центр сертификации отношений с разработчиками Apple Worldwide недействителен.

Загрузите его отсюда: https://developer.apple.com/certificationauthority/AppleWWDRCA.cer.

Перетащите его в Keychain Access, очистите проект и запустите.

Эрик
источник
Это начало происходить после того, как мы добавили право CloudKit. До этого, я думаю, было все равно, что сертификат WWDR был недействительным.
CommaToast
3

У меня был проект Obj-C, где я начал добавлять быстрые исходные файлы. Следующее исправило проблему для меня:

  1. Связь: RUNPATH SEARCH PATHS = $(inherited) @executable_path/Frameworks
  2. Swift Compiler - генерация кода: EMBEDDED CONTENT CONTAINS SWIFT = YES

Я только что создал новый проект из шаблонов Xcode 6.3 и сравнил настройки проекта со своим старым оригинальным проектом.

pinzoni
источник
3

Попробуйте удерживать Alt, затем перейдите в Product -> Clean Build Folder ...

Надеюсь, это поможет кому-то ..

stakahop
источник
Это не дает ответа на вопрос. Как только у вас будет достаточно репутации, вы сможете комментировать любой пост ; вместо этого предоставьте ответы, которые не требуют разъяснений от автора . - Из обзора
Rakete1111
Это произошло после попытки добавить новый класс в старый проект. Нет информации о том, сколько лет проекту. Итак, очистка проекта и принудительное обновление кеша имеют смысл. Старый проект также подразумевает, что существует высокая вероятность того, что сертификат будет заменен в то же время, поскольку срок действия сертификатов Apple Production и Developer истекает каждый год. Прочитайте об основной причине ошибки в соответствии с Apple Technical Q & A на. developer.apple.com/library/ios/qa/qa1886/_index.html . Со мной произошло то же самое, и Clean Build Folder снова запускает проект. Пусть люди попробуют ..
stakahop
Это произошло сразу после перезагрузки моего сертификата iOs. Простая чистка (меню «Продукт»), и все работает отлично ;-)
Себастьян РЕМИ
Работал отлично. Спасибо.
София
3

Причин для этого много. Проведя веселые выходные в поисках еще одной проблемы, вызывающей эту проблему (порядок подписания кода), я хотел создать краткий ответ, объединяющий все возможные решения:

  1. Добавить встроенный контент Содержит код Swift для проекта. Вам необходимо установить этот флаг, если ваше приложение содержит код Swift.
  2. Чистый проект . В дополнение к проекту> Clean вы также можете удалить DerivedDataи Buildкаталоги. Посмотрите в настройках для местоположения DerivedData. Buildдолжен быть в папке вашего проекта.
  3. Убедитесь, что пути поиска Runpath содержат@executable_path/Frameworks .
  4. Убедитесь, что ваш сертификат содержит ваш Apple Team ID в поле OU (Organization Unit). Apple добавит его для вас, просто отмените существующий сертификат распространения и создайте новый, загрузите, установите на KeyChain, восстановите все профили обеспечения, загрузите их и перестраивать.
  5. Перезапуск Xcode. Если все в принципе хорошо, но Xcode еще не дошел.

Это легко. Если вы делаете свою собственную сборку командной строки, вы можете создавать свои собственные .ipaфайлы для загрузки. В этом случае вам необходимо обеспечить следующее:

  1. Убедитесь, что версия файлов Swift внутри SwiftSupport/iphoneosсовпадает с версией в.Contents/YourApp.app/Frameworks Поскольку Swift еще не совместим между версиями в двоичном формате, вы должны убедиться, что эти версии являются теми, для которых вы создали свое приложение. Вы можете найти эти библиотеки в /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos.
  2. Сначала подпишите библиотеки и фреймворки . Вам нужно сначала codesignбиблиотеки и файлы инфраструктуры ( Frameworksв .appпапке), а затем подписать все .appдерево. .appДерево должно быть подписано с , entitlements.plistно не в рамках.

Надеемся, что когда выйдет Swift 3.0 и нам больше не понадобится связывать Swift с нашими приложениями, вся эта проблема исчезнет.

jlyonsmith
источник
2

У меня была эта проблема с использованием специального мобильного (или корпоративного) мобильного решения с производственным сертификатом. Переход на сертификат развития и mobileprovision решил проблему.

MacTeo
источник
4
Это может позволить вам запустить приложение в разработке, но как вы будете развертывать, если не работает специальный или корпоративный профиль?
Кристофер Джонсон
2

Мой проект - проект Swift с некоторыми классами Objective-C. У меня была такая же проблема при подписании со старым сертификатом inHouse (enterprise).

Следующие шаги исправили это для меня.

  1. Создайте и используйте новый сертификат и мобильное обеспечение.
    (Ссылка на блог AIRSIGN )
  2. Установите Runpath Search Pathsнастройки сборки на: $(inherited) @executable_path/Frameworks.
    (См. Ответ Мэтта )
jqgsninimo
источник
2

Решение 6:

В нашем случае сертификат распространения предприятия был аннулирован. Создание нового сертификата и обновление профиля обеспечения решило проблему.

(Кажется, есть много разных причин этой ошибки. Надеюсь, это кому-нибудь поможет.)

Picciano
источник
Это решило мою проблему. Святое дерьмо, что пустая трата времени пытается это исправить. Я надеюсь, что это решает проблемы других пользователей. Я смог отладить свое приложение с помощью своей пользовательской среды, но не смог запустить версию машины сборки на jenkins. Отмена моих сертификатов распространения и создание нового профиля обеспечения предприятия исправили сборки для меня.
Cynistersix
2
То
2

Я перепробовал все ответы, приведенные выше, ничего не получалось.

Наконец-то сработало после обновления до Yosemite

Prabu
источник
2

Я столкнулся с той же самой проблемой, установив правильную идентификацию знака кода, решил проблему (Настройки сборки-> Идентификация подписи кода).

Согласно техническому вопросу Apple «Все корпоративные и стандартные сертификаты разработчика iOS, созданные после выпуска iOS 8, имеют новое поле Team ID в надлежащем месте для запуска приложений на языке Swift»

Сайкиран К
источник
2

Если вы добавите три фреймворка через встроенные двоичные файлы, они также будут добавлены в связанные фреймворки и библиотеки. Удаление трех записей в связанных фреймворках и библиотеках решит проблему.

Магические методы, такие как перезапуск Xcode и перезагрузка Mac, не работают на меня.

Arbipher
источник
Спасибо за улучшение формата. Выглядит лучше «Связанные рамки и библиотеки» - это один раздел, а не два. Я изменяю «и» на жирный. @ Bartłomiej
Арбифер
来 来 шуа фэн зи шу бу дин
мороженое
2

Добавление фреймворка как «Embedded Binary» вместо просто «связанных фреймворков и библиотек» - исправил мою проблему.

Я также установил флаг «Внедренный контент содержит код Swift» на «Да».

Навин Шан
источник
1

Обновление до последней версии OS X (Yosemite)

После нескольких часов проб и ошибок я пришел к решению этой проблемы. - Если это относится к вашему случаю, конечно.

У меня была такая же проблема, пока я не обновил свой Mac OS X с Mavericks до Yosemite. - Это исправило мою проблему, надеюсь, это исправит и вашу

Активно Ленивый
источник
1

Я перепробовал все решения, найденные в сети, в том числе для Apple и новые сертификаты. Безуспешно.

Единственный способ запустить xcode после 6 месяцев попыток - создать новую учетную запись на моем macbook.

Элдерваз Ваз
источник
1

Обычно эта ошибка исчезает, если вы добавляете эту библиотеку в сегмент «Копирование файлов» на этапах сборки.

raphael_mav
источник
Это работало для меня на XCode 7.2.1. Я использовал + на панели «Фазы сборки», выбрал «Фаза создания новых файлов копирования», затем перетащил структуру из дерева рабочей области в раздел «Копирование файлов». Наконец я выбрал пункт назначения: рамки. После чистой сборки мое приложение запустилось как положено.
Роб Смоллшир
1

И если все вышеперечисленное не поможет вам, и вы действительно расстроены ... Попробуйте лучший трюк из всех: Cleanи просто, чтобы быть уверенным Clean Build Folder. :) Надеюсь, это кому-нибудь поможет!

Georg
источник
1

Ни одно из этих решений, казалось, не работало для меня постоянно; после каждой пары успешных запусков это снова не получится. Для меня флаг «Внедренный контент содержит Swift Code» всегда был установлен на YES.

Оказывается, я бы установил Xcode на 6,3-совместимый. Изменение обратно на 3.2-совместимое решило это:

brandonscript
источник
Спасибо! Я попробовал все остальное. Я изменил его обратно на 3.2, очистил проект, перезапустил Xcode и он
заработал
1

У меня тоже была эта проблема, только она не была обнаружена libswiftXCTest.dylib.

Решение состояло в том, чтобы добавить XCTest.frameworkк цели Тестов, в Build Phases/Link Binary with Library. Я получал эту ошибку, даже когда пытался построить основную цель.

Лорд Жолт
источник
0

Это обнаружилось, когда я добавил новую цель расширения Today с языком Swift в старый проект. Исправлено легко путем обновления проекта до рекомендуемых настроек. Xcode 6.0.1

Вилем Курц
источник
0

Я получил ту же проблему, используя Mavericks, Xcode 6.1.1, тестирование на iPhone5 с iOS 8.1.1. Я перепробовал все возможные решения, включая новые сертификаты и профили обеспечения, но ничего не помогло. Я сделал изменения Embedded Content Contains Swift CodeиRunpath Search Paths на уровне проекта, и на уровне цели.

Я сейчас установил Yosemite, и без каких-либо дальнейших изменений он начал работать.

Patrik
источник
0

Та же самая проблема здесь, для меня это была Crashlytics / Fabric / Beta / Twitter / Независимо от того, что они сами называют загрузкой двоичного файла, в котором отсутствовали встроенные фреймворки. Если я сделал архив, а затем экспортировал сборку Enterprise стандартным способом, они сработали.

rob5408
источник
0

Моя среда: Cocos2d 2.0, Box2d, Цель C

В дополнение к другим ответам, приведенным выше, я, наконец, перешел на вкладку «Общие» и сделал WatchKit необязательным.

Цели: Общее: Связанные фреймворки и библиотеки: WatchKit.framework: Необязательно

Джим Рота
источник
0

После месяцев и месяцев, пытаясь всё здесь ... Определение безумия ... запуск Xcode под новым пользователем Mac решил это за меня.

Я удалил ~ / Library / Developer / * и переустановил Xcode - так что понятия не имею, что еще нужно отформатировать, чтобы он работал.

wcribbs
источник