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


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 тоже
подойдет

9
У меня сработала очистка проекта: SHIFT + CMD + K
B-Rad

9
Вы используете Apple ID, не являющийся разработчиком, для установки приложения на свой телефон? Похоже, что в iOS 13.3.1 установлены неработающие приложения с бесплатными идентификаторами Apple ID, но только если они содержат встроенные фреймворки. Если возможно связать все ваши зависимости как статические библиотеки, а не фреймворки (например, если вы используете Cocoapods, вы можете удалить use_frameworks! Из своего Podfile), это должно решить проблему на данный момент.
Кашиф Раббани,

30

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

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

Если вы столкнулись с этой проблемой в новом проекте Swift, Решение 4 подойдет вам лучше всего.

Решение 1 :

Перезагрузите Xcode, затем компьютер и iPhone

Решение 2 :

Перейдите в настройки сборки проекта и установите Embedded Content Contains Swiftфлаг кода на ДА.

Решение 3:

Перейдите в настройки сборки проекта и добавьте параметр @executable_path/FrameworksRunpath Search Paths

Решение 4:

Если ничего из вышеперечисленного не работает, это должно быть. Apple, похоже, исправила сертификаты ниндзя, как упоминалось в сообщении AirSign

Сертификаты At 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 и не работает. Я воссоздал сертификат и положение, и это тоже не работает
Сацуки

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

4 сделал это и для меня! Вот ссылка на сообщение AirSign
pshah

2
Как мне отредактировать сертификат InHouse?
Аль Ван

1
1 и 2 у меня не работали. Окно -> проект, удалить производные данные исправлено. Низкий, глючный xcode>. <
Cymric

27
Xcode->Product->Clean + Xcode Restart

После попытки многих других упомянутых решений, к моему вечному смущению, выполнение Xcode-> Product-> Clean и перезапуск Xcode помогло.


2
Я тоже выполнил многие из ранее упомянутых шагов, таких как получение WWRD, проверка пути выполнения и т. Д. Ничего не работало, пока я не сделал эту «Очистку». Так что БОЛЬШОЕ спасибо!
Джо Фамм

Мне пришлось перезапустить Xcode после нескольких неудачных чисток. Это может показаться слишком очевидным для решения, учитывая, насколько сложно Apple сделать все остальное,
Джеффри Керн,

19

Для меня эта проблема возникла из-за сертификата WWRD - у меня была последняя версия, но по какой-то причине он был установлен на «всегда доверять» вместо «использовать по умолчанию», что, по-видимому, имеет значение.


4
+1 за проблему с сертификатом. Я пробовал абсолютно ВСЕ, но потом заметил, что для моего сертификата разработчика в связке ключей установлено значение «Всегда доверять». Переход на «Использовать по умолчанию», как вы говорите, сработал отлично. Спасибо!
tylermilner

1
Все перепробовал, и это сработало. Серьезно, почему Apple не может исправить это как часть Xcode ....
UKDataGeek

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

2
Спас мой день, братан! спасибо
andrea.rinaldi

Я думаю, что это ИДЕАЛЬНОЕ решение этой проблемы. Я также пробовал почти все решения, доступные в Интернете, но ни одно из них не работает для меня, кроме этого. Отличное решение ...
Эээ. Вихар

17

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

У меня была та же проблема, и я смог ее исправить, повторно загрузив WWDR (всемирный центр сертификации по связям с разработчиками Apple). Загрузите отсюда: http://developer.apple.com/certificationauthority/AppleWWDRCA.cer


1
исправил это для меня после переноса Xcode и моего профиля пользователя с одного Mac на другой.
RTasche

1
Работает в моем случае, спасибо!
Элис Чан

1
СПАСИБО, Сэр, ВЫ СПАСИТЕ ЖИЗНЬ
Джош О'Коннор

Спасибо, я так долго искал это.
крикун

14

Удаление DerivedData помогло мне.

Сделал это через 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.

Ни одно из этих предложений, ни из какой-либо другой темы не решило эту проблему. Что ДЕЙСТВИТЕЛЬНО работало, так это удаление ВСЕГО из фазы сборки «Связать двоичный файл с библиотеками», фазы сборки «Целевые зависимости» и общей настройки «Связанные платформы и библиотеки».

FYI, я использую Карфаген и добавил $(PROJECT_DIR)/Carthage/Build/tvOSкFRAMEWORK_SEARCH_PATHS настройке сборки, так что мои рамки могут быть найдены.

К вашему сведению 2, этот проект и фреймворки работают на 100% быстро, и фреймворки строятся DEFINES_MODULE = YES.


DEFINES_MODULE = ДА у меня сработало. В моем проекте были и Objective-C, и Swift.
Джейсон Ху,


2

Цитируется из технических вопросов и ответов QA1886 :

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

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

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

Обычно эта ошибка появляется в журнале консоли устройства с сообщением, аналогичным одному из следующих: [....] [deny-mmap] сопоставленный файл не имеет идентификатора команды и не является двоичным кодом платформы: / private / var / mobile / Контейнеры / 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

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

Важно: будьте осторожны, если вам нужно отозвать и настроить новый сертификат Enterprise Distribution. Если вы являетесь внутренним разработчиком Enterprise, вам нужно быть осторожным, чтобы не отозвать сертификат распространения, который использовался для подписи приложения, который любой из ваших сотрудников Enterprise все еще использует в качестве любых приложений, подписанных этим корпоративным сертификатом распространения. немедленно перестанет работать. Вышесказанное относится только к сертификатам Enterprise Distribution. Сертификаты разработки можно безопасно отозвать для корпоративных / стандартных разработчиков 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 - заводская библиотека, если это какая-то добавленная библиотека, тогда она вероятно, неправильно скомпилирован)


Здравствуйте, спасибо за ответ, у меня вопрос. В ответе вы сказали, и он должен показать вам арки, которые находятся в этой библиотеке. как вы это показываете.
Сацуки

команда называется file ... но я думаю, вам нужно найти локальную версию на вашем Mac, а не путь на телефоне ...
Grady Player

1

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

Что касается меня, я изменил идентификатор пакета, так как у нас другой идентификатор пакета для распространения и разработки.

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

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

Решение :

  1. Убедитесь, что целевой телефон подключен
  2. в меню xcode нажмите [Окно> Устройства]
  3. выберите целевое устройство в меню слева.
  4. Справа будет список приложений на вашем устройстве. Найдите приложение, которое вы пытаетесь протестировать, и удалите его.

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

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


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

1

Я только что почистил проект и Clean Build Folderпо альт Меню продуктов


Ярлык для очистки папки сборки: 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 Studio и ссылаетесь на переносимую библиотеку, для которой вам нужно использовать приманку PCL и трюк с переключением. Это происходит, если ссылающийся проект устарел по отношению к указанной библиотеке. Я обнаружил, что обновил свою общую библиотеку до более новой структуры, обновил свои пакеты, но не обновил свои пакеты iOS для соответствия. Обновление пакетов решило эту ошибку для меня.


1

Вы все еще можете столкнуться с этой проблемой после того, как попробовали ответить @Jieyi Hu. может это кажется исправленным, но если он появится снова (возможно, на 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/issues/105

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

Спасибо @ Cédric


0

Вы можете восстановить свой сертификат и перезагрузить iPhone.

Эта работа для меня, надеюсь, она вам поможет.


Объясните, пожалуйста, как вы это сделали.
TDM

0

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


Добро пожаловать в Stack Overflow! Это не дает ответа на вопрос. Чтобы критиковать или запрашивать разъяснения у автора, оставьте комментарий под его сообщением - вы всегда можете комментировать свои собственные сообщения, и как только вы заработаете достаточную репутацию, вы сможете комментировать любое сообщение. Если у вас есть связанный, но другой вопрос, задайте новый вопрос со ссылкой на этот, если он поможет обеспечить контекст.
ddb

0

Вам необходимо установить сертификат (просто сертификат, а не профиль обеспечения) для каждой динамической структуры, которую вы связываете (прямо или косвенно) в своем проекте.введите описание изображения здесь


0

В моем случае после удаления всех сертификатов, созданных Xcode и загруженных. Пусть xcode 8.1 управляет сертификацией приложения, он работает хорошо !!! Надеюсь, это кому-то поможет.


0

Я столкнулся с этой проблемой ТОЛЬКО на симуляторе. Кажется, это связано с некоторыми недопустимыми Правами в нашем приложении, но проблема не появляется, когда мы запускаем на устройстве.


0

Я решил использовать эти уловки.

Шаг 1:

Перейдите в настройки сборки проекта и добавьте параметр @ executable_path / Frameworks в Runpath Search Paths

Шаг 2:

Перейдите к настройкам целевой сборки и добавьте @ executable_path / Frameworks в параметр Runpath Search Paths и Framework Search Paths.

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

Шаг 3:

Повторно загрузите WWDR (всемирный центр сертификации по связям с разработчиками Apple), установите для параметра «Использовать системные значения по умолчанию».

Шаг 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), установите для параметра «Использовать системные значения по умолчанию».


0

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


0

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

У меня аналогичная проблема, в которой подробная информация представлена ​​как первое изображение.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.