Причина: не знайдено відповідного зображення [закрито]


129
dyld: Library not loaded: @rpath/libswiftCore.dylib
  Referenced from: /var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/Stylist.app/Stylist
  Reason: no suitable image found.  Did find:
    /private/var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/testapp.app/Frameworks/libswiftCore.dylib: mmap() errno=1 validating first page of '/private/var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/testapp.app/Frameworks/libswiftCore.dylib'
(lldb) 

Я отримую цю помилку під час створення мого iPhone. Я вмію будувати на тренажері. Я переробив усі свої файли, але все ще не можу створити свій iPhone. Мій Xcode такий

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

Це рамкова проблема чи проблема підписання? У Xcode 6. цього не сталося. Дякую.



Я вирішив цю проблему (знайшовши безліч тупиків на SO), змінивши дозволи на всесвітній сертифікат розробників - дивіться мою відповідь тут: stackoverflow.com/a/41401399/559760 (сподіваюся, це допомагає!)
UKDataGeek

Оновлення для iOS 13.3.1: якщо у вас є цей нещасний iOS і спробуйте встановити додаток з вкладеними рамками, просто знайте, що це помилка - оновлення до 13.4.1 або пізнішої версії, це вирішено ще
iago849

Відповіді:


389

Я мав цю проблему раніше, тому що випадково відкликав свій сертифікат. Тоді всі мої швидкі проекти мають цю проблему. Є два способи вирішити це:

Клацніть на Продукт → Очистити (або CMD+ Shift+ K)

Або вручну очистивши файли налаштувань Xcode:

rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache"
rm -rf ~/Library/Developer/Xcode/DerivedData
rm -rf ~/Library/Caches/com.apple.dt.Xcode

1
використовувати їх у терміналі
Jieyi Hu

Нема проблем. Виберіть мою відповідь, якщо вам подобається :)
Jieyi Hu

10
Я думаю, що Alt + Clean також зробить це
jjxtra

9
Прибирання проекту працювало для мене: SHIFT + CMD + K
B-Rad

9
Використовуєте Apple ID, який не розробник, для встановлення програми на ваш телефон? Схоже, iOS 13.3.1 зламав програми, встановлені з безкоштовними ідентифікаторами Apple, але лише якщо вони містять вбудовані рамки. Якщо можливо пов'язати всі ваші залежності як статичні бібліотеки, а не рамки (наприклад, якщо ви використовуєте Cocoapods, ви можете видалити Use_frameworks! Зі свого Podfile), це має вирішити проблему.
Кашиф Раббані

30

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

Якщо ви зіткнулися, коли ви і Swift код / ​​бібліотека в проекті Objectice C, ви повинні спробувати Рішення 1-2-3

Якщо ви зіткнулися з цією проблемою, новий проект Swift Рішення 4 підійде вам найкраще.

Рішення 1 :

Перезавантажте Xcode, потім комп'ютер та iPhone

Рішення 2 :

Перейдіть до налаштувань побудови проекту та встановіть Embedded Content Contains Swiftпрапор коду на ТАК

Рішення 3:

Перейдіть до налаштувань збірки проекту та додайте @executable_path/Frameworksдо параметра Шлях пошуку Runpath

Рішення 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 ~ 3 і не працює. Я відтворив сертифікат і положення, і це не працює так
Satsuki

1
Я зіткнувся з тим самим повідомленням про помилку, яке запитував спочатку Сацукі. Рішення 4 зробило для мене трюк. У мене виникли проблеми з Realm Framework, але лише в тому випадку, якщо я спробував створити архів своєї програми та потім встановити її через iTunes (інакше пряме розгортання на пристрої було вільним).
Петро Іваницький

4 це зробив і для мене! Ось посилання на пост AirSign
pshah

2
Як редагувати сертифікат InHouse?
Аль Ван

1
1 і 2 для мене не працювали. Вікно -> проект, видалення отриманих даних виправлено. Inferior, buggy xcode>. <
Cymric

27
Xcode->Product->Clean + Xcode Restart

Спробувавши багато інших згаданих рішень, до мого вічного збентеження, зробивши Xcode-> Product-> Clean та перезавантаживши Xcode, зробив свою справу.


2
Я теж зробив багато згаданих раніше кроків, таких як отримання WWRD, перевірка пробігу і т. Д. .... Нічого не працювало, поки я не зробив це "Очищення". Тож ВЕЛИКЕ Дякую!
Джо Фамме

Мені довелося перезапустити Xcode, після того, як кілька очищень не вдалося. Це може здатися занадто очевидним для рішення, враховуючи, наскільки Apple, здається, робить все інше
Джеффрі Керн,

19

Для мене ця проблема з'явилася завдяки сертифіката WWRD - "Моя" була актуальною, але чомусь було встановлено "завжди довіряти" замість "використовувати системний дефолт", що, очевидно, має значення.


4
+1 для проблеми cert. Я спробував абсолютно ВСЕ, але потім помітив, що в моєму сертифікаті розробника було встановлено значення "Завжди довіряти". Як ви сказали, зміна на "Використовувати системний дефолт" працювала на відмінно. Дякую!
tylermilner

1
Перепробував усе, і це вдалося. Серйозно Чому яблоко не може виправити це як частину Xcode ....
UKDataGeek

1
Вкрай ВАЖЛИВО: після зміни доступу до сертифіката на "використовувати системні настройки за замовчуванням" глибоко ОЧИТАЙТЕ проект (cmd + Alt + shift + K)
Роман Слєпко

2
Врятував мій день брато! дякую
andrea.rinaldi

Я думаю, що це УЛЬТИМАТЕВНЕ рішення цієї проблеми. Я також спробував майже всі рішення, доступні через Інтернет, але не з них працює для мене, окрім цього. Чудове рішення ...
Ер. Віхар

17

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

У мене була така сама проблема, яку вдалося виправити, повторно завантаживши WWDR (Apple Worldwide Developers Certification Authority). Завантажте звідси: http://developer.apple.com/certificationauthority/AppleWWDRCA.cer


1
виправили це для мене після передачі Xcode та мого профілю користувача з одного Mac на інший.
RTasche

1
Працює для моєї справи, дякую!
Аліса Чан

1
ДЯКУЄМО ВІДПОВІДЬ, ВИ ЖИТТЯ ЖИТТЯ
Josh O'Connor

Дякую, мені так довго було потрібно, щоб знайти це.
гучний звук

14

Видалення отриманих даних зробило для мене хитрість.

Зробив це за допомогою Xcode -> Preferences -> Locations -> натиснув стрілку позаду шляху DerivedData та видалив всю папку DerivedData у Finder.


дякую, працював для мене, cordova + xcode 7.2
jujule

1
Window > Projects > My Project > Derived Data > Deleteзробив роботу за мене.
Водоспад Майкл

Працював для мене на Xcode 10.1. Все добре працювало, але в один щасливий день Xcode почав показувати ці помилки. Дякую.
Жебжик Бабич

5

Це сталося з мого боку при створенні програми в командному рядку через xcodebuild та xcrun PackageApplication, підписавши програму з профілем підприємства. На наших серверах побудови CI сертифікат було встановлено на "Завжди довіряти" у брелоку (виберіть сертифікат -> Отримати інформацію -> Довіряти -> "Використовувати системні за замовчуванням" можна змінити на "Завжди довіряти"). Мені довелося встановити його на "Використовувати системний стандарт", щоб зробити цю роботу. Спочатку ми встановили це на "Завжди довіряти", щоб обходити діалоги брелок, які з'являються після оновлення програмного забезпечення та оновлень сертифікатів.


3

Загрожуючи посіяти більше плутанини, у мене виникло це питання під час оновлення до XC8.

Жодна з цих пропозицій, як і жодна інша нитка, не вирішила її. Що DID працює, це було видалення ВСЕГО з фази збірки "Бінарне посилання з бібліотеками", фази збірки "Цільові залежності" та загальних параметрів "Зв'язані рамки та бібліотеки".

FYI, я використовую Carthage і додав $(PROJECT_DIR)/Carthage/Build/tvOSдо FRAMEWORK_SEARCH_PATHSналаштування збірки, щоб мої рамки були знайдені.

FYI 2, це проекти та рамки, на 100% швидкі, і рамки будуються DEFINES_MODULE = YES.


DEFINES_MODULE = ТАК працював на мене. Мій проект містив і об'єктивний C, і Swift.
Jason Huh


2

Цитується з технічного запитання QA1886 :

Програма Swift виходить з ладу при спробі посилання на бібліотеку Swift libswiftCore.dylib.

З: Що я можу зробити щодо помилки завантаження libswiftCore.dylib на консолі мого пристрою, яка виникає, коли я намагаюся запустити додаток мови Swift?

Відповідь: Щоб виправити цю проблему, вам потрібно буде підписати додаток за допомогою сертифікатів для підписання коду за допомогою Тематичного організаційного підрозділу (OU), встановленого для вашого ідентифікатора команди. Усі сертифікати для розробників Enterprise та iOS, створені після виходу iOS 8, мають нове поле Team ID у потрібному місці, щоб дозволити запускати додатки мови Swift.

Зазвичай ця помилка з’являється в журналі консолі пристрою з повідомленням, подібним до одного з наступних: [....] [заперечення-mmap] відображений файл не має ідентифікатора команди та не є двійковим платформою: / private / var / mobile / Контейнери / Пакет / Застосування / 5D8FB2F7-1083-4564-94B2-0CB7DC75C9D1 / YourAppNameHere.app / Рамки / 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, вам потрібно бути обережним, щоб ви не відкликали сертифікат розповсюдження, який використовувався для підписання програми, який використовує будь-який з ваших працівників Enterprise, як будь-які програми, підписані з цим сертифікатом розповсюдження підприємства. негайно перестане працювати Сказане стосується лише сертифікатів розповсюдження підприємства. Серти для розробки безпечно відкликати для підприємств / стандартних розробників iOS.

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

Тема: UID = 269J2W3P2L, CN = Поширення iPhone: Назва компанії, OU = 269J2W3P2L, O = Назва компанії, C = FR

У мене є сертифікат розвитку підприємства, створення нового вирішило питання.


хтось може пояснити це англійською?
UKDataGeek

1

у вас, мабуть, немає правильної арки в цій вкладці, ви можете зробити це

file /private/var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/testapp.app/Frameworks/libswiftCore.dylib

і він повинен показати вам арки, які знаходяться в цій бібліотеці ... Я не впевнений, як ви пов'язуєте, але це, мабуть, не правильний шлях (якщо libswiftcore - це фабрична бібліотека, якщо це якась добавка до бібліотеки, то це певно, складено неправильно)


Привіт, Дякую за вашу відповідь, у мене є питання. У відповіді ви сказали, і він повинен показати вам арки, які є в цій бібліотеці. як ти це показуєш.
Сацукі

команда називається файлом ... але, мабуть, вам потрібно знайти локальну версію на вашому mac, а не шлях по телефону ...
Grady Player

1

У мене теж було це питання, однак нічого, що я намагався вище, і в кількох інших постах працював .. крім цього.

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

Моє обладнання дозволено в цьому положенні, і мій обліковий запис команди є дійсним, але це перекинуло вищевказану помилку на деякі інші рамки.

Виявляється, мені потрібно було повністю видалити стару версію програми зі свого телефону. І не просто видалити його стандартним способом.

Рішення:

  1. Переконайтесь, що підключений цільовий телефон
  2. з меню xcode натисніть [Window> Devices]
  3. виберіть цільовий пристрій у лівому меню.
  4. Праворуч буде список програм у вашому пристрої. Знайдіть додаток, яке намагаєтеся випробувати та видаліть.

Очевидно, що при встановленні одного і того ж додатка в одній команді під іншим ідентифікатором пакету, якщо ваш не починається повністю з нуля, є деякі посилання на рамки, які затуманюються.

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


Мій ідентифікатор групи не змінився. І жоден із перерахованих вище пропозицій не виправляв речі (-> Очистити; видалити вручну; перезавантажити все; та щоразу вручну видаляти додаток із iPhone; тощо). Просто слідуючи пропозиціям Крістофера, миттєво замислюючись, миттєво нічого не очищаючи. [iphone 5; iOS 9.3.5; Xcode 7.3]
marco

1

Я щойно очистив проект і Clean Build Folderза допомогою Alt меню продукту


Ярлик для очищення папки збірки: alt + cmd + shift + k
Ori

1

Нижче кроки успішно відпрацьовані.

1) У динамічній бібліотеці ім'я встановлення повинно бути "@loader_path"

2) У головному проекті Шлях пошуку Runpath повинен бути "@loader_path" та "@ loader_path / Frameworks"

3) З перегляду використаних брелоків -> показати сертифікати минули та видалив усе.

4) Видалено сертифікат розповсюдження та перевстановлено.

5) Завантажено developer.apple.com/certificationauthority/AppleWWDRCA.cer та встановлено.


1

Нещодавно я стикався з цією проблемою. Я спробував усі можливі рішення, але нічого не вийшло. Наприкінці я просто вийшов з Xcode, видалив сертифікати в брелок і встановив все свіже та перезапущений mac. На щастя, це спрацювало як шарм :)


1

У мене була та сама проблема, яку вдалося виправити, повторно завантаживши WWDR (Apple Worldwide Developer Relations Certification Authority). Завантажте звідси :

і встановіть значення Завжди довіряйте брелок. Зміна наUse System Default

це працює для мене, я сподіваюся, що це допоможе тобі


1

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


1

Такі ж симптоми ви бачите, якщо працюєте в студії Xamarin, і ви посилаєтесь на портативну бібліотеку, для якої потрібно виконати приманку PCL і переключити фокус. Це відбувається, якщо проект посилання застарілий стосовно бібліотеки, на яку посилається. Я виявив, що я оновив свою спільну бібліотеку на новіші рамки, оновив свої пакунки, але не оновив свої пакети iOS, щоб вони відповідали. Оновлення пакетів вирішило цю помилку для мене.


1

Ви все ще можете отримати це питання після спробу @Jieyi Hu Answer. можливо, це здається виправленим, але якщо він з’являється знову (можливо, на xCode 9).

Однак це рішення, схоже, спрацює (стосується Cocoapods 1.5.x):

  1. очистити свій проект
  2. закрити Xcode та видалити DerivedData
  3. відкрийте Podfile у своєму проекті та додайте це:

    post_install do |installer| installer.pods_project.build_configurations.each do |config| config.build_settings.delete('CODE_SIGNING_ALLOWED') config.build_settings.delete('CODE_SIGNING_REQUIRED') end end

  4. оновлення стручка

Джерела:

https://github.com/evgenyneu/Cosmos/isissue/105

https://github.com/Skyscanner/SkyFloatingLabelTextField/isissue/201#issuecomment-381915911

Дякую @ Cédric


0

Ви можете відновити сертифікат і перезавантажити iPhone.

Ця робота для мене, я сподіваюся, що це допоможе тобі.


Поясніть, будь ласка, як ви це зробили.
TDM

0

Я вирішую проблему, перевіривши свої локальні брелки. Зберігайте login.keychain має відповідний сертифікат


Ласкаво просимо до переповнення стека! Це не дає відповіді на запитання. Щоб критикувати або вимагати роз'яснення у автора, залиште коментар під їх публікацією - ви завжди можете коментувати власні публікації, і як тільки ви заробите достатню репутацію, ви зможете коментувати будь-яку публікацію. Якщо у вас є пов'язане, але інше питання, поставте нове запитання, посилаючись на це питання, чи допоможе він створити контекст.
ddb

0

Вам потрібно встановити сертифікат (лише сертифікат і не надавати профіль) для кожного динамічного фрейму, який ви пов'язуєте (прямо чи опосередковано) у своєму проектівведіть тут опис зображення


0

У моєму випадку після видалення всіх сертифікацій, створених Xcode та завантажених. Нехай xcode 8.1 керує сертифікацією програми, це добре працює !!! Сподіваюся, це може комусь допомогти.


0

Я зіткнувся з цим питанням ТІЛЬКИ на тренажері. Схоже, це пов’язано з деякими недійсними правами в нашій програмі, але ця проблема не з’являється під час роботи на пристрої.


0

Я вирішив за допомогою цих хитрощів.

Крок 1:

Перейдіть до налаштувань збірки проекту та додайте @ Executable_path / Frameworks до параметра Шлях пошуку Runpath

Крок 2:

Перейдіть до налаштувань цільової збірки та додайте @ Executable_path / Frameworks до параметра "Шляхи пошуку Runpath" та "Шляхи пошуку рамки".

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

Крок 3:

Повторно завантаживши WWDR (Центр сертифікації зв'язків з розробниками Apple Worldwide), встановіть опцію Використовувати системний дефолт як параметр.

Крок 4:

Видалити всі отримані дані за допомогою терміналу

rm -rf ~ / Бібліотека / Розробник / Xcode / DerivedData / *

Крок 5 :

Видаліть усі сертифікати та встановіть їх на брелок. Увімкнено параметр Використовувати системний замовчування

Крок 6:

Перезавантажте Xcode.


0

зіткнулося з тим же питанням

  1. мій термін дії мого сертифікату розробника минув, тому створено новий сертифікат розробника та завантажте його
  2. очистити та перезапустити xcode, це працює для мене

0

Я зіткнувся з цим питанням з XCode 9. Нічого з вищезазначеного не вийшло. Це зробило для мене трюк:

Project > Build Settings > Swift Compiler - Search Path: Setting "Import Paths"до $(PROJECT_DIR)(рекурсивний)


0

Це вирішило мою помилку-

Повторно завантаживши WWDR (Центр сертифікації зв'язків з розробниками Apple Worldwide), встановіть опцію Використовувати системний дефолт як параметр.


0

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


0

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

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

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

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