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

185

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

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

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

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

34 ответа

136
Лучший ответ

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

  • 0
    Это исправило это и для меня, я переключил настройку расширения на true. Проект objc, но ext быстрый и не сработал с самого начала
  • 0
    Это было и мое решение. У меня есть существующий проект приложения для iOS (ObjC), к которому я добавляю расширение Today (новая цель в проекте, расширение является плагином для основного приложения). Мне нужно было зайти в настройки цели приложения и разрешить проблему «Настройка сборки» и «Альт ...». Имеет смысл, но, учитывая, сколько других вещей Xcode 6.0 автоматически настраивает для вас, обидно, что эта важная опция была упущена.
Показать ещё 11 комментариев
82

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

$(inherited) @executable_path/Frameworks

Изображение 1780

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

  • 3
    Работал на меня. Обновлен до последней версии XCode и обнаружил, что этот путь установки в моем проекте приводил к более старой версии.
  • 1
    работал!! ты спас мой день! Я использовал быстрый контроль GitHub в цели C с xcode 6 GM. Благодарю.
Показать ещё 6 комментариев
82

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

  • 20
    Я пытаюсь использовать swift в новом проекте iOS и получаю эту ошибку при попытке запустить на устройстве iOS 8, но не в симуляторе. Перезапуск Xcode, моего ноутбука или телефона не решает проблему. Есть ли другое решение?
  • 2
    Это сработало и для меня
Показать ещё 5 комментариев
52

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

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

Если вы столкнулись с этой проблемой с новым проектом Swift, решение 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 post

В сертификатах 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

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

  • 1
    Да, решение 1 сработало для меня, не могу поверить :)
  • 1
    Объявление 2: теперь оно называется «ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES» (см. Комментарий ниже принятого ответа).
Показать ещё 2 комментария
38

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

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

  • 0
    Спас мой день! Потрясающие!
  • 1
    Я видел эту ошибку, когда пытался использовать скомпилированный фреймворк, написанный на swift (вместо встраивания исходных файлов в качестве отдельной цели). Вышеупомянутое решение работало и для меня.
Показать ещё 9 комментариев
16

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

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

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

  • 0
    Хотя эта ссылка может ответить на вопрос, ссылки ломаются. Таким образом, рекомендуется включить ключевые части из ссылки. Ответы только на ссылки не рекомендуются.
  • 0
    Это сработало для моего приложения Enterprise. Спасибо!
Показать ещё 1 комментарий
14

Решение 5:

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

  • 0
    ОК, похоже, сработало. Я просто пытаюсь написать библиотеку быстрого кода для быстрого проекта. Почему-то мне все еще интересно, правильно ли это. Однако я в восторге от его работы.
  • 0
    Я включил свои фреймворки в раздел «Копирование фреймворков» на вкладке «Фазы сборки», но одну фреймворк здесь не удалось выбрать. «Общие» позволили выбрать этот другой фреймворк и добавили его в фазы сборки, а приложение создает и запускает. Как ни странно, я все еще мог запустить приложение на симуляторе.
Показать ещё 1 комментарий
10

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

  • 0
    Я собираюсь дать пощечину следующему фанату Apple, который высмеивает перезагрузку Windows
4

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

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

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

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

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

  • Ссылка: RUNPATH SEARCH PATHS = $(inherited) @executable_path/Frameworks
  • Компилятор Swift - Генерация кода: EMBEDDED CONTENT CONTAINS SWIFT = YES

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

3

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

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

2

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

  • Добавить встроенный контент Содержит Swift Code для проекта. Вам нужно установить этот флаг, если ваше приложение содержит код Swift.
  • Очистить проект. Помимо Project > Clean вы также можете удалить каталоги DerivedData и Build. Посмотрите в разделе "Настройки" для местоположения DerivedData. Build должен находиться в папке проекта.
  • Убедитесь, что пути поиска Пути поиска содержат @executable_path/Frameworks.
  • Убедитесь, что ваш сертификат содержит идентификатор вашей Apple Team в поле OU (Unit 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 с нашими приложениями, все это проблема исчезнет.

  • 0
    Чистый решил это для меня!
2

Попробуйте провести Alt, затем перейдите в Product → Clean Build Folder...

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

  • 0
    Это не дает ответа на вопрос. Как только у вас будет достаточно репутации, вы сможете комментировать любой пост ; вместо этого предоставьте ответы, которые не требуют уточнения от автора . - Из обзора
  • 0
    Это произошло после попытки добавить новый класс в старый проект. Нет информации о том, сколько лет проекту. Итак, очистка проекта и принудительное обновление кеша имеют смысл. Старый проект также подразумевает, что существует высокая вероятность того, что сертификат будет заменен в то же время, поскольку срок действия сертификатов Apple Production и Developer истекает каждый год. Прочитайте об основной причине ошибки в соответствии с Apple Technical Q & A на. developer.apple.com/library/ios/qa/qa1886/_index.html . Со мной произошло то же самое, и Clean Build Folder снова запускает проект. Пусть люди попробуют ..
Показать ещё 2 комментария
2

Если вы добавите три фреймворка через Embedded Binaries, они будут добавлены в Linked Frameworks и Libraries. Удалите три записи в Связанные структуры и библиотеки, чтобы решить проблему.

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

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

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

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

2

Решение 6:

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

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

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

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

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

  • Создание и использование нового сертификата и мобильного обеспечения.
    (Ссылка Блог AIRSIGNs)
  • Задайте настройку Runpath Search Paths для сборки: $(inherited) @executable_path/Frameworks.
    (Ссылка ответ matts)
2

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

  • 4
    Это может позволить вам запустить приложение в разработке, но как вы будете развертывать, если не работает специальный или корпоративный профиль?
1

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

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

1

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

Оказывается, я установил бы Xcode 6.3-совместимым. Сменив его на 3.2-совместимую, он решил:

Изображение 1781

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

Добавление Framework как "встроенного двоичного" вместо "Linked Frameworks and Libraries" - Исправлена ​​проблема.

Я также устанавливаю встроенный контент. Содержит флаг Swift Code для YES.

1

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

1

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

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

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

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

1

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

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

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

0

Что касается https://forums.developer.apple.com/thread/21292

Это решение работало для меня:

Это произошло на моей стороне при создании приложения в командной строке через xcodebuild и xcrun PackageApplication, подписывая приложение с помощью профиль предприятия. На наших серверах сборки CI был установлен сертификат "Всегда доверять" в цепочке ключей (выберите сертификат → Получить информацию → Trust → "Use System Default" можно изменить на "Always Trust" ). я имел чтобы вернуть его в "Использовать системное значение по умолчанию", чтобы сделать эту работу. Первоначально мы установили для этого "Всегда доверять" для работы с цепочкой ключей диалоговые окна, которые появляются после обновлений программного обеспечения и обновлений сертификатов.

0

У меня такая же проблема. Мое решение состоит в том, чтобы переместить каждое объявление pod внутри предложения target.

От:

pod 'SomePod1'
pod 'SomePod2'
pod 'SomePod3'
target 'MyAwesomeApp', :exclusive => true do

end

To:

target 'MyAwesomeApp', :exclusive => true do
    pod 'SomePod1'
    pod 'SomePod2'
    pod 'SomePod3'
end

Я предполагаю, что если объявления pod помещаются вне объявления цели, CocoaPods (0.39.0) может использовать неправильный xcconfig.

Pods.debug.xcconfig(X

Pods-MyAwesomeApp.debug.xcconfig(O

0

Я добавил SCLAlertView pod в свой проект, а затем удалил его. Я не удалял import SCLAlertView из моего диспетчера view. В идеале это должно дать ошибку времени компиляции, но она дала ошибку времени выполнения, упоминающую dyld: Library not loaded: @rpath/SCLAlertView.framework. Я удалил import SCLAlertView из моего диспетчера взглядов, построил его, и он не дал ошибку. Поэтому в моем случае я пытался создать import библиотеку, чья структура не была найдена. Удаление таких ссылок решит вашу проблему.

0

Недавно начал получать эту ошибку снова. В то время как ответы топ-2 решили это для меня в прошлом, ни один из предложенных ответов не работал на этот раз. Я заметил, что ошибка сказала:

 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'

Итак, я попытался удалить приложение с устройства, и мне удалось снова создать и запустить.

0

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

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

0

Моя среда: Cocos2d 2.0, Box2d, Objective C

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

Изображение 1782

0

В этом же выпуске, для меня это были Crashlytics/Fabric/Beta/Twitter/Whatever-they-call-yourself, загружающие двоичный файл, в котором отсутствовали встроенные фреймворки. Если я сделал архив, а затем экспортировал сборку Enterprise стандартным образом, они сработали шармом.

0

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

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

0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню