dyld: библиотека не загружена: @rpath/libswift_stdlib_core.dylib
Я получаю эту ошибку после добавления класса Swift в старый проект Xcode.
dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib
Как я могу снова запустить проект?
35 ответов
Для меня ни одно из предыдущих решений не сработало. Мы обнаружили, что есть флаг 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, перейти в Me mber Center и удалить все сертификаты и профили (кроме профилей для приложений в Магазине - вы не можете удалить их), а затем запустить весь процесс запроса сертификата с нуля.
Я не совсем уверен, почему этот вопрос опровергается, у меня также была эта проблема, когда я впервые попытался использовать Swift с существующим проектом. Перезапуск Xcode также исправил это для меня.
Я долго искал по этому вопросу. Есть несколько причин, вызывающих эту проблему.
Если вы сталкиваетесь, когда вы и 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
поэтому вы должны просто восстановить сертификат и предоставление
В моем случае я пытался импортировать пользовательский фреймворк и получал похожую ошибку. Оказывается, мне пришлось импортировать фреймворк во встроенные двоичные файлы, а не в связанные фреймворки и библиотеки.
Встроенные двоичные файлы находятся в разделе "Настройки проекта" -> -> "Общие".
Решение 5:
В моем случае все решения, упомянутые в ответе на рассылку, были очень полезными, но ни одно из них не сработало. Я решил свою проблему, добавив свою быструю библиотеку в раздел "Встроенные двоичные файлы" в разделе "Общие" цели моего проекта. Может быть, это связано с тем, что я включил мой быстрый фреймворк в мое рабочее пространство? Что бы это ни собиралось сейчас! Готовься, Свифт, я здесь!
Для разработчиков, у которых возникла эта проблема с дистрибутивами Adhoc / Enterprise,
Создайте производственный сертификат на портале dev, а затем заново создайте профиль распространения. Загрузите и установите их на свой Mac. Убедитесь, что вы выбрали правильный профиль в настройках сборки XCode и перестройте приложение.
Причин для этого много. Проведя веселые выходные в поисках еще одной проблемы, вызывающей эту проблему (порядок подписания кода), я хотел создать краткий ответ, объединяющий все возможные решения:
- Добавить встроенный контент Содержит код Swift для проекта. Вам нужно установить этот флаг, если ваше приложение содержит код Swift.
- Чистый проект. В дополнение к Проекту> Очистить вы также можете удалить
DerivedData
а такжеBuild
каталоги. Посмотрите в настройках для расположенияDerivedData
,Build
должен быть в папке вашего проекта. - Убедитесь, что пути поиска Runpath содержат
@executable_path/Frameworks
, - Убедитесь, что ваш сертификат содержит ваш Apple Team ID в поле OU (Organization Unit). Apple добавит его для вас, просто отмените существующий сертификат распространения и создайте новый, загрузите, установите на KeyChain, восстановите все профили обеспечения, загрузите их и перестраивать.
- Перезапуск Xcode. Если все в принципе хорошо, но Xcode еще не дошел.
Это легко. Если вы делаете свою собственную сборку командной строки, вы можете создавать свои собственные .ipa
файлы для загрузки. В этом случае вам необходимо обеспечить следующее:
- Убедитесь, что версия файлов Swift в
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 с нашими приложениями, вся эта проблема исчезнет.
Для меня проблема была связана с тем, что мой Центр сертификации отношений с разработчиками Apple Worldwide недействителен.
Загрузите его отсюда: https://developer.apple.com/certificationauthority/AppleWWDRCA.cer
Перетащите его в Keychain Access, очистите проект и запустите.
Я перепробовал все ответы, приведенные выше, ничего не получалось.
Наконец-то сработало после обновления до Yosemite
У меня был проект Obj-C, где я начал добавлять быстрые исходные файлы. Следующее исправило проблему для меня:
- Связь:
RUNPATH SEARCH PATHS = $(inherited) @executable_path/Frameworks
- Swift Compiler - генерация кода:
EMBEDDED CONTENT CONTAINS SWIFT = YES
Я только что создал новый проект из шаблонов Xcode 6.3 и сравнил настройки проекта со своим старым оригинальным проектом.
Попробуйте удерживать Alt, затем перейдите в Product -> Clean Build Folder...
Надеюсь, это поможет кому-то..
У меня возникла эта проблема с использованием специального мобильного решения (или корпоративного) с производственным сертификатом. Переход на сертификат развития и mobileprovision решил проблему.
Мой проект - проект Swift с некоторыми классами Objective-C. У меня была такая же проблема при подписании со старым сертификатом inHouse (enterprise).
Следующие шаги исправили это для меня.
- Создайте и используйте новый сертификат и мобильное обеспечение.
(Ссылка на блог AIRSIGN) - Задавать
Runpath Search Paths
установить настройки для:$(inherited) @executable_path/Frameworks
,
(См. Ответ Мэтта)
Решение 6:
В нашем случае сертификат распространения предприятия был аннулирован. Создание нового сертификата и обновление профиля обеспечения решило проблему.
(Кажется, есть много разных причин этой ошибки. Надеюсь, это кому-нибудь поможет.)
Если вы добавите три фреймворка через встроенные двоичные файлы, они также будут добавлены в связанные фреймворки и библиотеки. Удаление трех записей в связанных фреймворках и библиотеках решит проблему.
Магические методы, такие как перезапуск Xcode и перезагрузка Mac, не работают на меня.
Я столкнулся с той же самой проблемой, установив правильную идентификацию знака кода, решил проблему (Настройки сборки-> Идентификация подписи кода).
Согласно техническому вопросу Apple "Все корпоративные и стандартные сертификаты разработчика iOS, созданные после выпуска iOS 8, имеют новое поле Team ID в надлежащем месте для запуска приложений на языке Swift"
Добавление фреймворка как "Embedded Binary" вместо просто "связанных фреймворков и библиотек" - исправил мою проблему.
Я также установил флаг "Внедренный контент содержит код Swift" на "Да".
Я перепробовал все решения, найденные в сети, в том числе для Apple и новые сертификаты. Безуспешно.
Единственный способ запустить xcode после 6 месяцев попыток - создать новую учетную запись на моем macbook.
Моя среда: Cocos2d 2.0, Box2d, Цель C
В дополнение к другим ответам, приведенным выше, я, наконец, перешел на вкладку "Общие" и сделал WatchKit необязательным.
Ни одно из этих решений, казалось, не работало для меня постоянно; после каждой пары успешных запусков это снова не получится. Для меня флаг "Внедренный контент содержит Swift Code" всегда был установлен в значение YES.
Оказывается, я бы установил Xcode на 6,3-совместимый. Изменение обратно на 3.2-совместимое решило это:
Обновление до последней версии OS X (Yosemite)
После нескольких часов проб и ошибок я пришел к решению этой проблемы.- Если это относится к вашему случаю, конечно.
У меня была такая же проблема, пока я не обновил свой Mac OS X с Mavericks до Yosemite.- Это исправило мою проблему, надеюсь, это исправит и вашу
И если все вышеперечисленное не поможет вам, и вы действительно расстроены... Попробуйте лучший трюк из всех: Clean
и просто чтобы быть уверенным также Clean Build Folder
,:) Надеюсь, это кому-нибудь поможет!
Обычно эта ошибка исчезает, если вы добавляете эту библиотеку в сегмент "Копирование файлов" на этапах сборки.
У меня тоже была эта проблема, только она не была найдена libswiftXCTest.dylib
,
Решение было добавить XCTest.framework
к цели тестов, в Build Phases/Link Binary with Library
, Я получал эту ошибку, даже когда пытался построить основную цель.
В моем случае я просто использую "Cmd+Shift+K", а затем "Cmd+B" запускаю свою работу
Недавно снова начал получать эту ошибку. Хотя два верхних ответа решили это для меня в прошлом, ни один из предложенных ответов не сработал на этот раз. Я заметил ошибку сказал:
Reason: no suitable image found. Did find:
/private/var/mobile/Containers/Bundle/Application/8D8E5347-940A-4724-ACFE-33DF4C4DCB37/your.app/Frameworks/libswiftCore.dylib: mmap() errno=1 validating first page of '/private/var/mobile/Containers/Bundle/Application/8D8E5347-940A-4724-ACFE-33DF4C4DCB37/your.app/Frameworks/libswiftCore.dylib'
Поэтому я попытался удалить приложение с устройства и смог собрать и запустить снова.
Та же самая проблема здесь, для меня это была Crashlytics/Fabric/Beta/Twitter/ Независимо от того, что они сами называют, загружая двоичный файл, в котором отсутствовали встроенные фреймворки. Если я сделал архив, а затем экспортировал сборку Enterprise стандартным способом, они сработали.
Я добавил модуль SCLAlertView в свой проект, а затем удалил его. я не удаляла import SCLAlertView
от моего viewcontroller. В идеале это должно дать ошибку времени компиляции, но это дало упоминание ошибки времени выполнения dyld: Library not loaded: @rpath/SCLAlertView.framework
, Я удалил import SCLAlertView
с моего viewcontroller, соберите его, и он не дал ошибку. Так что в моем случае я пытался import
библиотека, структура которой не была найдена. Удаление таких ссылок решит вашу проблему.