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

320

Я пытаюсь запустить приложение Swift на своем iPhone 4s. Он отлично работает на симуляторе, и мой друг может успешно запустить его на своем iPhone 4s. У меня есть iOS 8 и официальная версия Xcode 6.

Я пробовал

  • Перезапуск Xcode, iPhone, компьютера
  • Очистка и восстановление
  • Отмена и создание нового профиля сертификата/обеспечения
  • Пути поиска пути: $(inherited) @executable_path/Frameworks
  • Встроенный контент содержит Swift-код: "Да"
  • Идентификатор подписи кода - это разработчик

Ниже приведена ошибка целиком

dyld: Library not loaded: @rpath/libswiftCore.dylib
  Referenced from: /private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/AppName
  Reason: no suitable image found.  Did find:
    /private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/Frameworks/libswiftCore.dylib: mmap() error 1 at
address=0x008A1000, size=0x001A4000 segment=__TEXT in Segment::map() mapping
/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/APPLICATION_NAME/Frameworks/libswiftCore.dylib
  • 1
    возможный дубликат dyld: библиотека не загружена: @ rpath / libswift_stdlib_core.dylib
  • 4
    очистить и восстановить работал для меня
Показать ещё 2 комментария
Теги:
xcode

40 ответов

482

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

Build Settings > Always Embed Swift Standard Libraries

После этого очистите проект до его сборки.

Для маленьких читателей есть некоторые объяснения. Наиболее важная часть:

установите для встроенного содержимого код Swift Code (EMBEDDED_CONTENT_CONTAINS_SWIFT) в YES в приложении, как показано на рисунке 2. Этот параметр сборки, определяющий, содержит ли целевой продукт встроенный контент с кодом Swift, сообщает Xcode о включении стандартных библиотек Swift в ваше приложение когда установлено значение YES.

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

Флаг ранее назывался Embedded Content Contains Swift Code

  • 19
    У меня тоже сработало, так что спасибо большое. Что меня озадачивает, если я добавляю быстрый код в проект, почему Xcode не обновляет это автоматически? Это звучит как разумное поведение по умолчанию. Я полагаю, что таким образом вы получите больший контроль над включенными библиотеками и т. Д.
  • 0
    Использование нового CocoaPods предварительно с поддержкой Swift требовало этого флага, по крайней мере для меня. Спасибо!
Показать ещё 22 комментария
104

Удивительно, но все, что я сделал, было "Очистить" мой проект (shift + cmd + K), и это сработало. Похоже, что это связано с сертификатом.

  • 0
    Очистка имеет смысл, поскольку она вызывает обновление кэшированных элементов, используемых в сборке. Я должен был сделать это, потому что я только что обновил сертификат подписи. Я сделал чистую и чистую папку сборки (опция-чистая).
  • 11
    ха да, это сработало. Я сбросил свои сертификаты ранее, и эта чистка работала как шарм.
Показать ещё 6 комментариев
94

Я начал получать эту ошибку при удалении:

@executable_path/Frameworks

из Runpath Search Paths в моих настройках сборки. Заменив его, все снова исправлено (спасибо за контроль источника!)

Я не знаю, как это произошло, но, похоже, для бинарного файла требуется найти встроенную среду выполнения Swift.

  • 2
    Обновил старый проект iOS6 до iOS7 и Swift и получил эту ошибку. @ executetable_path / Frameworks это исправили. Спасибо!
  • 5
    Для меня, начиная с Xcode 8b5, это были фактически @loader_path/../Frameworks для модульных тестов macOS и @loader_path/Frameworks для модульных тестов iOS, которые нужно было добавить.
Показать ещё 5 комментариев
57

Для устройства вам также необходимо добавить динамическую структуру в раздел " Embedded binaries " на вкладке " General " проекта.
Изображение 1647

  • 0
    Встроенные бинарные файлы или связанные фреймворки и библиотеки? А что вы имеете в виду, когда говорите о динамических рамках?
  • 0
    Я предполагаю, что вы пытаетесь использовать динамический фреймворк.
Показать ещё 9 комментариев
48

В Xcode 8 опция для Embedded Content Contains Swift Code опцию Embedded Content Contains Swift Code больше недоступна.

Он был переименован в "Always Embed Swift Standard Libraries = YES"

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

  • 0
    Это помогло мне с крахом на WatchOS
26

Я думаю, что это ошибка, когда сертификаты генерируются непосредственно из Xcode. Чтобы разрешить (по крайней мере, в Xcode 6.1/6A1052d):

  • 0
    У меня работало только при удалении и создании только в XCode, инструмент developer.apple.com «Сертификаты, идентификаторы и профили» создавал новые плохие сертификаты.
  • 4
    Прости мое невежество ... Как этот Ответ связан с заданным Вопросом? Похоже, вы ответили на другой вопрос. Или, более правильно, вы ответили на @ user3056783 удаленный ответ, который был просто «У меня тоже проблема с комментарием».
Показать ещё 5 комментариев
24

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

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

Чтобы открыть окно настроек сертификата, дважды щелкните сертификат в списке сертификатов доступа к цепочке ключей.

Изображение 1649Изображение 1650

  • 0
    Это сработало и для меня. Я использовал модули для включения SDN PubNub и AWS. Я пытался использовать различные методы, такие как изменение пути поиска Runpath. Это было уже установлено значение, указанное в ответе выше. Помечено как Да, чтобы встроить Swift-код в настройках сборки, но не работает. Наконец это решение сработало для меня. Приветствия.
  • 1
    Работал на меня. Я бы никогда не заподозрил что-то подобное. Большое спасибо.
Показать ещё 2 комментария
19

У меня была эта проблема с запуском моих тестов Swift (но не для моего приложения). Оказывается, для теста необходимо иметь в настройке Runpath Search Paths больше, чем @executable_path/Frameworks для тестовой цели. Настройка путей поиска Runpath на следующее сработала для меня:

$(inherited)
@executable_path/Frameworks
@loader_path/Frameworks
  • 1
    Да, это так! Столкнулся с этим для AFDateHelper.framework, Result.framework для тех, кто Google их путь здесь. Я понял, что это было решением, так как это изменило имя фреймворка, для которого я получал эту ошибку - это была фреймворк, который я пропустил при включении в carthage copy-frameworks так как это была вторичная зависимость (та, которую фреймворк я использовал добавил)
  • 2
    Аллилуйя! Благослови вас Бог, Донна Ли. Вот и закончилась 3-х часовая борьба.
Показать ещё 1 комментарий
16

Я думаю, что Apple уже подвела его под При сбое приложения Swift при попытке ссылки на библиотеку Swift libswiftCore.dylib

Цитируется по Техническому Q & A QA1886:

При попытке ссылки на библиотеку Swift появляется сообщение об ошибке Swift libswiftCore.dylib.

В: Что я могу сделать с ошибкой загрузки libswiftCore.dylib в моем консоль устройства, которая возникает, когда я пытаюсь запустить мое языковое приложение Swift?

A: Чтобы исправить эту проблему, вам нужно будет подписать приложение с помощью кода подписание сертификатов с Организационным подразделением (OU), установленным для ваш идентификатор команды. Все корпоративные и стандартные сертификаты разработчика iOS которые создаются после выхода iOS 8, имеют новое поле Team ID в правильном месте, чтобы запускать языковые приложения Swift.

Обычно эта ошибка появляется в журнале консоли устройства с сообщением аналогично одному из следующих:

[....] [deny-mmap] mapped file has no team identifier and is not a platform binary:
/private/var/mobile/Containers/Bundle/Application/5D8FB2F7-1083-4564-94B2-0CB7DC75C9D1/YourAppNameHere.app/Frameworks/libswiftCore.dylib

Dyld Error Message:
  Library not loaded: @rpath/libswiftCore.dylib

Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x0000000120021088
Triggered by Thread: 0

Referenced from: /private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/TestApp
Reason: no suitable image found. Did find:
/private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/Frameworks/libswiftCore.dylib: mmap() error 1 at address=0x1001D8000, size=0x00194000 segment=__TEXT in Segment::map() mapping /private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/Frameworks/libswiftCore.dylib
Dyld Version: 353.5

Новые сертификаты необходимы при создании архива и упаковки ваше приложение. Даже если у вас есть один из новых сертификатов, просто отставку существующий быстрый архив приложений не будет работать. Если он был построен с помощью pre-iOS 8, вам нужно будет создать еще один архив.

Важно: будьте осторожны, если вам нужно отменить и настроить новый Сертификат Enterprise Distribution. Если вы являетесь внутренним предприятием разработчику, вам нужно быть осторожным, чтобы вы не отменяли сертификат распространения, который использовался для подписывания приложения любым из ваших Сотрудники предприятия по-прежнему используют все приложения, которые были подписаны с сертификат корпоративного распространения перестанет работать немедленно. Вышеупомянутое относится только к распределению предприятий сертификаты. Сертификаты разработки могут быть отменены для корпоративных/стандартных разработчиков iOS.

Как ребята AirSign состояние, корни проблемы из отсутствующего атрибута OU в теме в поле Внутренний сертификат.

Тема: UID = 269J2W3P2L, CN = iPhone Распространение: название компании, OU = 269J2W3P2L, O = название компании, C = FR

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

  • 0
    Потратив много часов, пытаясь понять, почему моя новая установка CI не смогла правильно опубликовать бета-приложение (действительно, корпоративную учетную запись), я понял, что в опциях экспорта compileBitcode ДОЛЖЕН быть верным.
14

Вы должны установить Runpath Search Paths в @executable_path/Frameworks, как показано на следующем скриншоте настроек сборки:

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

Если у вас есть встроенные фреймворки в Swift, вы можете установить YES Параметры сборки Embedded Content Contains Swift Code.

  • 1
    ДА, для фреймворка в swift необходимо установить для параметра «Встроенный контент, содержащий Swift-код» значение ДА
  • 0
    Я создал инструмент командной строки, который использует некоторые библиотеки dylibs, которые должны поставляться вместе с инструментом в локальном каталоге (а не в / usr / lib или что-то в этом роде). otool -L для этих dylibs сказал мне, что они уже используют @rpath/... для своего собственного пути. Теперь, установив путь поиска Runpath к пути к этой папке, я могу запустить свой инструмент, и он найдет дилибы, которые хранятся в папке рядом с ним.
Показать ещё 1 комментарий
10

Пусть проект P импортирует пользовательскую библиотеку L, тогда вы должны добавить L в

P -> Build Phases -> Embed Frameworks -> +. Это работает для меня.

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

7

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

Решение для меня заключалось в установке этого отсутствующего сертификата. http://developer.apple.com/certificationauthority/AppleWWDRCA.cer

Нашел ответ здесь. https://stackoverflow.com/questions/13820680/this-certificate-was-signed-by-an-unknown-authority

6

Я решил, удалив полученные данные, и на этот раз он работал правильно. Пробовал с помощью Xcode 7.3.1GM

  • 0
    Удаление моих производных данных также сработало, я в любом случае заранее сделал чистку (CMD + K) на всякий случай, и ошибка умерла мучительной смертью!
6

Измените Копировать ресурсы подстраков для цели:

"${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-resources.sh"

в

"${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-frameworks.sh"
  • 1
    Если это не сломало что-то еще, это было исправлением для меня!
  • 0
    Что еще эта штука сломала? Можете ли вы помочь мне улучшить ответ?
Показать ещё 6 комментариев
4

Ни один из решений не работал у меня. Исправлена ​​ошибка при перезагрузке телефона. Странно, но это сработало.

4

После того, как мы все опробовали, я наконец узнал, что сборка не всегда включает каждую деталь снова и снова. Возможно, для ускорения процесса... Чтобы обеспечить упаковку WHOLE перед запуском на устройстве, сначала выполните очистку: Shift-Cmd-K. Затем постройте с помощью: Cmd-B. После этого запустите его на своем устройстве. Легко. С наилучшими пожеланиями всем вам симпатичные парни в этом месте!

  • 0
    Спасибо человек, ваше решение работает для меня.
4

Для меня, пробовав все без успеха, что было сделано, чтобы удалить @executable_path/Frameworks из Packaging section (не знаю, как он оказался там в первую очередь)

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

  • 0
    это для пути фреймворка или для пути основных настроек проекта?
  • 0
    У меня был один проект static lib a, и я хотел добавить в него swift fw. Эта инструкция вместе с Embedded Containers содержит код Swift to Yes, который решил все проблемы.
Показать ещё 1 комментарий
4

В моем случае это было просто имя моей цели:

Я переименовал его следующим образом: MyApp.something и появилась такая же проблема. Но я видел в окне настроек сборки, имя моего модуля продукта было изменено следующим образом MyApp-something. Итак, я удалил точку в моем целевом имени (MyAppSomething), и проблема исчезла.

3

ни одно из этих решений, похоже, не сработало, но когда я изменил разрешение сертификата World Wide Developer на Use System defaults, тогда это сработало. Я добавил шаги и скриншоты в ссылку ниже

Я бы посоветовал вам зарегистрировать билет в отчете об ошибке Apple, как указано здесь, поскольку Apple действительно должна решить эту массивную ошибку: https://stackoverflow.com/questions/24993752/os-x-framework-library-not-loaded-image-not-found

2

Там много ответов, но может быть, мой ответ поможет кому-то.

У меня такая же проблема. Мое приложение отлично работает на Simulator, но на устройстве было разбито, как приложение "Обещает", и дает ошибку, как указано выше. Я пробовал все ответы и решения. В моем случае, у моего проекта у меня несколько целей. Я создал дублируемую цель B от цели A. Целевая точка B отлично работает, а цель A разбилась. Я использую разные объекты изображения для каждой цели. После поиска и выполнения google я нашел кое-что, что могло бы помочь кому-то.

Сбой приложения прекращается, когда я изменяю название Launch images для обоих приложений. например, название объекта запуска Launch Image LaunchImage A. Target B Lunch Image имя актива LaunchImage B и назначается должным образом на вкладке "Общие" для каждой цели. Мои приложения отлично работают.

2

Xcode 7.2, iOS 9.2 на одном устройстве, 9.0 на другом. У обоих была ошибка. Не знаю, что изменилось, что вызвало это, но решения выше для WWDR были верны для меня. Установите этот сертификат и проблему.

https://forums.developer.apple.com/message/43547 https://forums.developer.apple.com/message/84846

  • 0
    Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными в случае изменения связанной страницы. - Из обзора
  • 2
    Извиняюсь. Загрузите сертификат WWDR, а затем откройте его для установки в цепочку для ключей. Сертификат находится здесь: developer.apple.com/certificationauthority/AppleWWDRCA.cer
1

Я использую Xcode 8.3.3 и Xcode 9.2. Решение для меня заключалось в том, чтобы переключить мой Xcode по умолчанию с 8 на 9, используя Xcode Select:

$ xcode-select --print-path

$ sudo xcode-select -switch/Applications/Xcode-9.2.app

Edit: На самом деле, что, по-видимому, помогло нам в том, что Xcode 9.2 использовал полученные данные из Xcode 8.3.3. Не решение, но, по крайней мере, это позволяет мне двигаться вперед с моей работой.

  • 0
    Я пытался это происходит, но когда я завершаю работу и перезапускаю xcode, это работает. :). Хорошая попытка
1

Это сообщение об ошибке также может быть вызвано при обновлении Xcode (а затем и новой версии Swift), и ваш проект использует фреймворк, встроенный/скомпилированный со старой/предыдущей версией Swift.

В этом случае исправление фреймворка и повторное добавление исправят проблему.

  • 0
    Это случилось со мной, переходя с Xcode 9.2 на 9.3. Хотя я узнал об этом лишь спустя долгое время после обновления, потому что, пока проект был построен с использованием Xcode 9.2 ранее, он продолжает бесконечно работать с Xcode 9.3. Только после чистой проверки я обнаружил это.
  • 0
    Блин, обновился сегодня и получил эту ошибку. Спасибо!!
1

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

0

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

/Applications/Xcode.app/Contents//Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/

Это дало предупреждение во время работы, говоря, что Xcode нашел 2 версии libswiftCore - что имеет смысл. За исключением того, что не включая эту строку, Xcode не обнаружил никаких версий libswiftCore.

Во всяком случае, это будет для меня, даже если это не кажется правильным - мое приложение - это просто утилита, которую я не собираюсь распространять и, по крайней мере, сейчас работает!

  • 0
    Спасибо! Я в вашей ситуации, и это сработало и для меня.
0

Самый простой и простой в использовании способ: очистить и перестроить.

Это решило проблему после того, как вы попробовали ответы выше и не сработали.

  • 0
    Это сработало для меня. Спасибо!
  • 0
    Работал на меня тоже, спасибо.
0

Для меня решение приведено ниже. Отключите "Вставить пакеты активов в пакет продукта", и этот вопрос не будет

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

0

Я нахожусь на Xcode 8.3.2. Для меня проблема заключалась в том, что сертификат AppleWWDRCA был как в системном, так и в логическом ключе. Убрали оба, а затем добавили только логин-логин, теперь он снова работает отлично. 2 дня потеряно

  • 0
    Можете ли вы сэкономить немного более подробный ответ? Где вы находите его (сертификат) - я думаю, то, что вы написали, означает что-то вроде Apple Worldwide Developer ... но какое полное имя? как повторно добавить его после того, как вы полностью удалили его из всех цепочек для ключей? Где вы найдете этот сертификат?
0

У меня такая же проблема, и проблема такова:

dyld: Library not loaded: @rpath/Result.framework/Result Referenced from: /private/var/mobile/Containers/Bundle/Application/74AD1FE2-7095-47D2-B059-520863050EE2/ReactiveCocoaTest.app/Frameworks/ReactiveCocoa.framework/ReactiveCocoa Reason: image not found

Мое решение ниже:

В TARGETBuild SettingOther Linker Flag → удалите фреймворк ReactiveCocoa. Если xxx.framework, вы знаете, вы должны удалить xxx.

удалить ReactiveCocoa

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

0

Я начал получать эту аналогичную ошибку для тестирования добавления файла S3 с использованием служб AWS. Ниже была ошибка. dyld: библиотека не загружена: @rpath/AWSAutoScaling.framework/AWSAutoScaling

Я искал много, и выше решения также не помогают мне. Ниже ссылки помогли мне решить эту проблему.

https://forums.developer.apple.com/thread/21292

Как говорится, чтобы исправить эту проблему, повторно загрузив WWDR (Всемирный центр сертификации разработчиков сообществ).

0

Вкратце, попробовали ли вы проверить "Включить биткод = НЕТ". Меня устраивает.

В моем случае мой проект был написан в Object-C и включает одну стороннюю структуру, написанную в swift. Я могу запустить приложение APP как на симуляторе, так и на реальном устройстве в режиме разработчика. Однако, как только я достиг APP с Ad-hoc-профилем и установил этот ipa OTA на реальном устройстве, он разбился. Даже не упомянуть загрузку для хранения. Надеюсь, эта информация поможет.

0

Если в вашем проекте есть cocoapods и разные схемы, попробуйте запустить обновление pod, которое исправило это для меня.

0

Из сообщения https://github.com/CocoaPods/cocoapods-integration-specs/pull/24/files, это означает, что swift.dylib нужно подписать, но не удалось. Я даже не создал новый быстрый проект с поддержкой cocoapod.

0

В моем случае одна из моих целей тестирования работала, а другая - нет. Это давало указанную ошибку с отсутствующей библиотекой или что-то еще. Я сравнил настройки для обоих целевых показателей тестирования и обнаружил, что у вас не было конфигурации для "Test Host", поэтому я скопировал это из рабочей тестовой цели и зафиксировал мою сломанную тестовую цель!

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

0

Когда Xcode запрашивает у вас сертификаты reset, вы reset. И приложение может быть запущено на самом устройстве без сбоев с сообщениями об ошибках. Как только эта проблема будет исправлена ​​в одном стремительном проекте. Также фиксируются и другие быстрые проекты с этой проблемой.

Я боролся за них примерно полдня, и я обнаружил, что сертификаты reset снова и снова в портале инициализации не помогают.

0

В моем случае

Я установил @executable_path/Frameworks

Но я также должен установить "пути поиска Framework"

$(PROJECT_DIR)/Frameworks

изменить как recursive

Что работает для меня.

0

Я использую Xcode 7.2. Если вы попробовали все вышеперечисленное, и ошибка все еще возникает, попробуйте удалить старый сертификат из Keychain Access! Это такая боль, чтобы наконец исправить это.

0

Вышеупомянутые решения не сработали для меня. Я исправляю проблему с помощью следующих шагов:

  • Мне нужно было пойти в телефон (Настройки > Профиль) и удалить профили, которые были в телефоне (включая все связанные с приложениями с этими профилями/положениями).
  • После этого убедитесь, что вы загрузите положения apple в xcode. Перейдите в настройки xcode > учетной записи и войдите в свою учетную запись разработчика Apple.
0

Чтобы добавить к решению Enterprise distribution cert: вы можете открыть Keychain и проверить сертификат. Если есть красный текст, в котором цепочка доверия не может быть проверена или она будет отозвана, она НЕ РАБОТАЕТ! На моем компьютере наш сертификат распространения показывался как отозванный, хотя веб-портал показал, что он все еще действителен. Мы получили новый сертификат распространения, который был зеленым (действительным) в Keychain, и это решило проблему.

-2

Следуя этим шагам, я работал у меня:

  • Нажмите на название своего проекта (очень верхняя часть навигатора)
  • Еще раз нажмите на название своего проекта (не на цель)
  • Перейдите на вкладку "Настройки сборки"
  • Искать Runpath Search Paths

  • Измените его значение на $(унаследованный) флаг (remove @executable_path/Frameworks).

Ещё вопросы

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