dyld: Бібліотека не завантажена: @ rpath / libswift_stdlib_core.dylib


205

Я отримую цю помилку після додавання класу Swift до старого проекту Xcode.

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

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


Ви також можете подивитися на stackoverflow.com/questions/38364320, який показує, як налагодити це за допомогоюotool
Jim Hayes

2017 рік - неймовірно, що лише перезапуск Xcode вирішив цю грізну для мене проблему.
Fattie

Відповіді:


152

Для мене жодне з попередніх рішень не спрацювало. Ми виявили, що ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIESв налаштуваннях збірки є прапор (у попередніх версіях: "Вбудований вміст містить код швидкого"), який потрібно встановити "ТАК". За замовчуванням це було НІ!


Це виправило і для мене, і я переключив налаштування розширення на істинне. Проект є загрозливим, але ext є швидким і не працював з самого початку
Cristi Băluăă

Це була і моя резолюція. У мене є існуючий проект програми iOS (ObjC), до якого я додаю розширення сьогодні (нова ціль у проекті, розширення - плагін для основного додатка). Мені довелося зайти в цільові налаштування програми та включити, що налаштування збірки та віола ... проблема пішла. Має сенс, але враховуючи, скільки інших речей Xcode 6.0 автоматично налаштовується для вас, шкода, що цей важливий варіант був пропущений.
hsoi

Це вирішило мою проблему - у нас був старіший проект з великою кількістю ObjC, до якого ми нещодавно почали додавати Swift. Незважаючи на те, що IPA була побудована і включала бібліотеки Swift, вона не працювала на деяких пристроях iOS7, поки ця настройка збірки не була перевірена, і ми зробили новий IPA. Це працювало на всіх наших проблемних пристроях.
Kendall Helmstetter Gelner

1
Крім цього нічого не працювало. Ви чудотворець мій добрий пане!
Рікі Хартманн

2
Вбудований контент містить устарений код Swift, ЗАВЖДИ ЗАВЖДИ_EMBED_SWIFT_STANDARD_LIBRARIES
nivritgupta

91

Ця помилка може виникнути, якщо під час перетворення проекту Objective-C щось почало використовувати Swift. Проблема полягає в тому, що параметри збірки Linker ніколи не були налаштовані належним чином, тому вам доведеться це робити вручну. Знайдіть налаштування збірки шляхів пошуку Runpath та встановіть його на:

$(inherited) @executable_path/Frameworks

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

EDIT: Я також повинен додати, що останнім часом цілий ряд цих помилок викликаний чимось іншим цілком - Apple внесла зміни в сам Swift, починаючи, можливо, з Xcode 6.1 або 6.1.1. Здається, єдиним рішенням є залишити Xcode, знищити ваші сертифікати в Keychain Access, перейти до Центру членів та видалити всі сертифікати та профілі (крім профілів для додатків у магазині - ви не можете їх видалити), а потім запустити весь процес запиту сертифікатів з нуля.


3
Працювали для мене. Оновлено до останньої версії Xcode і виявив, що цей шлях налаштування в моєму проекті веде до старішої версії.
ObjectiveTC

1
працював !! ти врятував мій день! Я використовував швидкий контроль GitHub в об'єктиві C з xcode 6 GM. Дякую.
imthegiga

1
Це працювало і для мене. Перезапуск Xcode не робив.
Dan Loewenherz

1
працював на мене. До речі, в кінці повідомлення про помилку я отримав "Причина: зображення не знайдено".
Пітер Чжоу

2
Слава Богу! Там було!
КипінняВина

79

Я не дуже впевнений, чому це питання викликає недоречність, у мене була така проблема, коли я вперше спробував використати Swift з існуючим проектом. Перезапуск Xcode також вирішив це для мене.


20
Я намагаюся використовувати swift в новому проекті iOS, і я отримую цю помилку при спробі роботи на пристрої iOS 8, але не в тренажері. Перезавантаження Xcode, мого ноутбука чи телефону не вирішує проблему. Чи є якесь інше рішення?
Девід Скрундц

2
На жаль, це не спрацювало для мене під час бета-версії 4, намагаючись запустити додаток для Mac, який використовує основу Swift.
Крейг Отіс

Будь ласка, включіть у свою відповідь посилання @Developer, оскільки це дійсно допомагає.
Лачезар Тодоров

Спробуйте це, але киньте також чисте.
Скотт Макензі

55

Я довго шукав це питання. Є кілька причин, що викликають це питання.

Якщо ви зіткнулися, коли ви і 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

На сертифікати 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
Оголошення 2: Зараз він називається "ВЖЕ-НАДІЙСЬКИЙ_EMBED_SWIFT_STANDARD_LIBRARIES" (див. Коментар нижче прийнятої відповіді).
Рафаель

1
Я хотів додати ... проекти macOS вимагають @executable_path/../Frameworksтам, де проекти iOS вимагають цього без ..середини. Зміна цього значення важлива, якщо ви перетворили ціль з однієї ОС в іншу.
Метт Галлахер

41

У моєму випадку я намагався імпортувати користувальницьку систему і отримував подібну помилку. Виявляється, мені довелося імпортувати рамку в Вбудовані Бінарні файли, а не у Пов'язані рамки та бібліотеки.

Вбудовані бінарні файли знаходяться в розділі Налаштування проектів -> -> Загальні


Врятував мій день! Дивовижно!
Клаас

1
Я бачив цю помилку, коли намагався використовувати складений фреймворк, написаний швидко (замість того, щоб вбудовувати вихідні файли як окрему ціль). Вище рішення працювало і для мене.
alex da franca

Дякую тонну, врятував мій повний день.
Бадрінат

1
Працював для мене, намагаючись зв’язати рамку, частково написану швидко, у старий проект, який був цілком об'єктивним. Цей параметр насправді був у налаштуваннях збірки. Більше інформації тут: stackoverflow.com/questions/24163870/…
Пелет

Це в розділі Налаштування цілей, а не проект, щоб бути впевненим.
Безліг

16

Для розробників, які мали цю проблему з розширеннями Adhoc / Enterprise,

Створіть сертифікат на виробництво з порталу розробників, а потім відновіть профіль розподілу. Завантажте та інсталюйте їх на свій Mac. Переконайтесь, що ви вибрали правильний профіль у налаштуваннях збірки Xcode та перезавантажте програму.

Джерело: https://devforums.apple.com/message/1022908#1022908


Хоча це посилання може відповісти на питання, посилання розриваються. Таким чином, рекомендується включити ключові частини за посиланням. Відповіді лише для посилань не рекомендуються.
Pokechu22

Працював для мого корпоративного додатка. Дякую!
sylvanaar

15

Рішення 5:

У моєму випадку всі рішення, зазначені у відповіді невідомих, були дуже корисними, але жодне не спрацювало. Я вирішив свою проблему, додавши свою швидку бібліотеку до розділу "Вбудовані бінарні файли" в розділі "Загальні" цілі мого проекту. Можливо, це пов’язано з тим, що я включив мій швидкий фреймворк у свою робочу область? Що б зараз не склав! Приготуйся Свіфт, я тут!


Добре, що, здавалося, працює. Я просто намагаюся написати бібліотеку швидких кодів для швидкого проекту. Якось мені все ще цікаво, чи правильно це. Однак я в захваті від її роботи.
kpierce8

Я включив свої рамки в розділ "Копіювати рамки" на вкладці Фази збірки - але тут не можна було вибрати один фреймворк. "Загальне" дозволило вибрати цей інший фреймворк і додало його до фаз збірки, а додаток будує та запускає. Як не дивно, я все ж міг запустити додаток на тренажері.
djbp

Спасибі Крістофе. Як і ви, випробували всі рішення, і зрозуміло, що швидку бібліотеку неможливо просто перетягнути на проект до іншого. Вам явно потрібно помістити бібліотеку у вбудований розділ (він же чіткіше швидкий модуль, я сумніваюся, може бути інший тип вбудованих речей). Навіть якщо Xcode міг добре визначити його автоматично і зробити роботу за нас ... Але це не завдання нашого улюбленого XCode;), остаточно тут витрачати час ...
Містер Бонжур,

Крім того, якщо бібліотека вже є у списку, переконайтесь, що вона позначена як "Вставити та підписати". Це виправляє мою проблему.
SquareBox

10

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


Я буду ляпати наступного яблучного фанбоя, який сміється з перезавантаження Windows
Josh

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 і порівняв налаштування проекту зі своїм старим оригінальним проектом.


3

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

Сподіваюся, це допоможе комусь ..


Це не дає відповіді на запитання. Коли у вас буде достатня репутація, ви зможете коментувати будь-яку публікацію ; натомість надайте відповіді, які не потребують уточнення від запитувача . - З огляду
Rakete1111

Це сталося після спроби додати новий клас до старого проекту. Немає інформації, скільки років старий проект. Отже, очищення проекту та примусове оновлення кешу мають сенс. Старий проект також передбачає, що є велика ймовірність, що сертифікат тим часом буде змінено, оскільки сертифікати Apple Production і Developer закінчуються щороку. Про основну причину помилок читайте у розділі Технічні запитання та відповіді компанії Apple на сайті. developer.apple.com/library/ios/qa/qa1886/_index.html . Те саме сталося і зі мною, і Clean Build Folder змушує проект запуститись знову. Нехай люди спробують ..
stakahop

Це сталося одразу після перезавантаження мого сертифіката iOs. Просте Clean (меню продукту), і все працює добре ;-)
Sébastien REMY

Працювали чудово. Дякую.
iSofia

3

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

  1. Додайте вбудований вміст Містить код Swift до проекту. Вам потрібно встановити цей прапор, якщо ваша програма містить код Swift.
  2. Чистий проект . Окрім проекту> Очистити, ви також можете видалити каталоги DerivedDataта Buildкаталоги. Подивіться в розділі Налаштування для місцезнаходження DerivedData. Buildмає бути у папці вашого проекту.
  3. Переконайтеся, що шляхи пошуку Runpath містять@executable_path/Frameworks .
  4. Переконайтесь, що ваш сертифікат містить ваш ідентифікатор команди Apple у полі OU (Організаційна одиниця). 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 з нашими програмами, вся ця проблема піде назовні.


2

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


4
Це може дати вам запустити додаток у розробці, але як ви будете розгортатись, якщо спеціальний або корпоративний профіль не працює?
Крістофер Джонсон

2

Мій проект - проект Swift з деякими класами Objective-C. У мене була така ж проблема, коли я був підписаний зі старим сертифікатом inhouse (підприємство).

Наступні кроки вирішили це для мене.

  1. Створіть та використовуйте новий сертифікат та мобільне забезпечення.
    (Посилання на блог AIRSIGN )
  2. Встановіть Runpath Search Pathsналаштування збірки на: $(inherited) @executable_path/Frameworks.
    ( Відповідь мат. Відповідь )

2

Рішення 6:

У нашому випадку сертифікат розповсюдження підприємства був відкликаний. Створення нового сертифіката та оновлення профілю забезпечення вирішили проблему.

(Схоже, існує багато різних причин цієї помилки. Сподіваюся, що це комусь допоможе.)


Це вирішило моє питання. Святе лайно, що марна трата часу, намагаючись це виправити. Я сподіваюся, що це вирішує проблеми інших користувачів. Мені вдалося налагодити додаток у моїй користувальницькій структурі, але не вдалося запустити версію верстата для складання на джинкінах. Відкликання моїх сертифікатів на розповсюдження та створення нового профілю забезпечення підприємства виправляло мої труднощі.
cynistersix

2
Це те саме з Рішенням 4
приймає

2

Я спробував усі відповіді, наведені вище, нічого не вийшло.

Нарешті працював після оновлення до Йосеміті


2

Я зіткнувся з тією ж проблемою, встановлення правильної ідентичності коду вирішило проблему (Налаштування налаштувань-> Ідентифікація підпису коду)

Відповідно до технічного питання Apple "Усі сертифікати для розробників Enterprise і стандарт iOS, створені після випуску iOS 8, мають нове поле Team ID у потрібному місці, щоб дозволити запускати додатки мови Swift"


2

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

Магічні методи, такі як повторний запуск Xcode та перезапуск Mac, не працюють на мене.


Дякуємо за покращення формату. Це виглядає краще. "Пов'язані рамки та бібліотеки" - це один розділ, а не два. Я змінюю "і" на жирний. @ Bartłomiej
Арбіфер

特 来 shua fen zi shu bu ding
icemelon

2

Додавання Framework як "Вбудованого двійкового" замість просто "Зв'язані рамки та бібліотеки" - виправлена ​​моя проблема.

Я також встановив прапорець Вбудований вміст, який містить прапор Swift Code.


1

Оновлення до останньої версії OS X (Yosemite)

Після годин проб і помилок я прийшов до вирішення цієї проблеми. - Якщо це стосується вашого випадку, звичайно.

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


1

Я спробував усі рішення, які знайшли в Інтернеті, включаючи Apple та нові сертифікати. Без успіху.

Єдиний спосіб, коли я міг запустити xcode, після 6 місяців спроб, це створити новий обліковий запис на моїй книзі macbook.


1

Зазвичай ця помилка зникне, якщо ви додасте цю бібліотеку до сегменту "Копіювати файли" у вашій фазі збірки.


Це працювало для мене на XCode 7.2.1. Я використав + на панелі «Фази збирання», вибрав «Фаза нового копіювання файлів», а потім перетягнув рамку з дерева робочої області в розділ «Копіювати файли». Нарешті я вибрав пункт призначення: рамки. Після чистої збірки мій додаток розпочався так, як очікувалося.
Роб Смоллшир

1

І якщо все вищесказане не допоможе вам, і ви справді розчаруєтесь ... Спробуйте найкращий трюк із усіх: Cleanі просто щоб бути впевненим також Clean Build Folder. :) Сподіваюся, це комусь допоможе!


1

Жодне з цих рішень не здавалося, що для мене послідовно працює; після кожної пари успішних пробіжок знову не вдасться. Прапор "Вбудований вміст містить код швидкого" для мене завжди був "ТАК".

Виявляється, я б встановив, що Xcode сумісний з 6.3. Змінивши його назад на 3.2-сумісну, вирішено:


Дякую! Я спробував все інше. Я змінив його на 3.2, очистив проект, перезапустив Xcode і він працював
gabriellanata

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, і без подальших змін він почав працювати.


0

Тут же проблема, для мене Crashlytics / Fabric / Beta / Twitter / Як би вони не називали, самі завантажували двійковий файл, у якому бракувало вбудованих рамок. Якщо я зробив архів і потім експортував збірку Enterprise стандартним способом, вони працювали в чаріві.


0

Моє середовище: Cocos2d 2.0, Box2d, мета C

На додаток до інших відповідей вище, я нарешті зайшов на вкладку Загальні та зробив WatchKit необов’язковим.

Цілі: Загальне: Пов'язані рамки та бібліотеки: WatchKit.framework: Необов’язково


0

Після місяців і місяців, які тут все пробували ... Визначення божевілля ... запуск Xcode під новим користувачем Mac вирішив це для мене.

Я видалив ~ / Library / Developer / * і перевстановив Xcode - тому немає підказки, що ще форматувати, щоб він працював.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.