Причина: подходящее изображение не найдено.
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. Спасибо.
31 ответ
У меня была эта проблема, потому что я случайно отозвал свой сертификат. Тогда все мои быстрые проекты имеют эту проблему. Есть два способа решить это:
Нажмите на продукт -> Очистить (или 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
Я понятия не имею, почему, хотя. Удачи, посмотрим, поможет ли это.
Я долго искал по этому вопросу. Есть несколько причин, вызывающих эту проблему.
Если вы сталкиваетесь, когда вы и Swift-код / библиотека в проекте Objectice C, вам следует попробовать Решение 1-2-3
Если вы столкнулись с этой проблемой с новым проектом Swift, Solution 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
поэтому вы должны просто восстановить сертификат и предоставление
Xcode->Product->Clean + Xcode Restart
После попытки многих других упомянутых решений, к моему вечному смущению, выполнив Xcode->Product->Clean и перезапустив Xcode, добился цели.
Для меня эта проблема возникла из-за сертификата WWRD - шахта была обновлена, но по какой-то причине она была установлена на "всегда доверять" вместо "использовать систему по умолчанию", что, очевидно, имеет значение.
Если вы случайно сбросили связку ключей, это может произойти из-за отсутствия сертификатов Apple в связке ключей. Я последовал за ответом, чтобы решить мою проблему.
У меня была та же проблема, и я смог ее исправить, повторно загрузив WWDR (Apple Worldwide Certification Authority). Загрузите отсюда: http://developer.apple.com/certificationauthority/AppleWWDRCA.cer
Удаление DerivedData помогло мне.
Сделал это через Xcode -> Preferences -> Locations -> щелкнул стрелку за путем DerivedData и удалил всю папку DerivedData в Finder.
Риск засева растерян, у меня была эта проблема при обновлении до XC8.
Ни одно из этих предложений, ни из какого-либо другого потока не решило это. Что ДЕЙСТВИТЕЛЬНО работало, так это удаление ВСЕХ из фазы сборки "Link Binary with Libraries", фазы сборки "Target Dependencies" и общего параметра "Linked Frameworks and Libraries".
К вашему сведению, я использую Карфаген и добавил $(PROJECT_DIR)/Carthage/Build/tvOS
к FRAMEWORK_SEARCH_PATHS
настройка сборки, чтобы мои рамки можно было найти.
К вашему сведению 2, эти проекты и рамки являются на 100% быстрыми, и рамки строятся DEFINES_MODULE = YES
,
Это происходило на моей стороне при создании приложения в командной строке с помощью xcodebuild и xcrun PackageApplication, при подписывании приложения с помощью корпоративного профиля. На наших серверах сборки CI в цепочке для ключей был установлен сертификат "Всегда доверять" (выберите сертификат -> Получить информацию -> Доверие -> "Использовать систему по умолчанию" можно изменить на "Всегда доверять"). Мне пришлось установить его обратно на "Использовать системные настройки по умолчанию", чтобы сделать эту работу. Первоначально мы установили значение "Всегда доверять", чтобы обойти диалоговые окна цепочки для ключей, которые появляются после обновлений программного обеспечения и обновлений сертификатов.
- Удалить приложение с устройства
- Очистить проект (CMD + SHift + K)
- Сборка / запуск на устройстве
Цитируется по техническим вопросам QA1886:
Приложение Swift аварийно завершает работу при попытке обратиться к библиотеке Swift libswiftCore.dylib.
В: Что я могу сделать с ошибкой загрузки libswiftCore.dylib в консоли моего устройства, которая возникает, когда я пытаюсь запустить свое приложение на языке Swift?
О: Чтобы устранить эту проблему, вам нужно будет подписать свое приложение, используя сертификаты для подписи кода с установленной организационной единицей (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
Новые сертификаты необходимы при создании архива и упаковке вашего приложения. Даже если у вас есть один из новых сертификатов, просто подать в отставку существующий архив приложений swift не получится. Если он был создан с сертификатом до iOS 8, вам нужно будет создать другой архив.
Важно: пожалуйста, будьте осторожны, если вам нужно отозвать и настроить новый сертификат Enterprise Distribution. Если вы являетесь внутренним разработчиком Enterprise, вам нужно быть осторожным, чтобы не отозвать сертификат распространения, который использовался для подписи приложения, которое все еще использует один из ваших сотрудников Enterprise, поскольку все приложения, подписанные этим сертификатом распространения предприятия немедленно прекратит работу Вышесказанное относится только к сертификатам Enterprise Distribution. Сертификаты разработки безопасны для аннулирования для корпоративных / стандартных разработчиков iOS.
Как утверждают ребята из AirSign, проблема связана с отсутствующим атрибутом OU в поле темы внутреннего сертификата.
Тема: UID=269J2W3P2L, CN=iPhone Распространение: Название компании, OU=269J2W3P2L, O= Название компании, C=FR
У меня есть сертификат развития предприятия, создание нового решило проблему.
Вы можете все еще получить эту проблему после того, как попробовали Ответ @Jieyi Hu. возможно, это кажется исправленным, но если это придет снова (возможно, на xCode 9).
Однако этот обходной путь, кажется, работает (относится к Cocoapods 1.5.x):
- очистить свой проект
- закройте Xcode и удалите DerivedData
откройте 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
обновление стручка
Источники:
https://github.com/evgenyneu/Cosmos/issues/105
https://github.com/Skyscanner/SkyFloatingLabelTextField/issues/201
Спасибо @ Седрик
Ниже шаги успешно сработали.
1) В динамической библиотеке имя установки должно было быть "@loader_path"
2) В основном проекте путь поиска Runpath должен быть "@loader_path" и "@ loader_path / Frameworks"
3) Из брелка используется вид -> показать устаревшие сертификаты и все удалено.
4) Удалил сертификат распространения и переустановил.
5) Загрузил файл developer.apple.com/certificationauthority/AppleWWDRCA.cer и установил его.
Я недавно столкнулся с этой проблемой. Я перепробовал все возможные решения, но ничего не получалось. В конце я просто вышел из Xcode, удалил сертификаты в связке ключей и установил все заново и перезапустил Mac. К счастью, это работает как шарм:)
У меня тоже была эта проблема, однако ничего, что я пробовал выше, и в нескольких других постах работало.. кроме этого.
Для меня я изменил идентификатор пакета, так как у нас есть другой идентификатор пакета для распространения и разработки.
Мое оборудование разрешено на этом условии, и моя учетная запись команды действительна, но она выдавала вышеупомянутую ошибку на некоторой другой структуре.
Оказывается, мне нужно было полностью удалить старую версию приложения с моего телефона. И не просто удаляя его стандартным способом.
Решение:
- Убедитесь, что целевой телефон подключен
- из меню xcode нажмите [Окно> Устройства]
- выберите целевое устройство в боковом меню слева.
- Справа будет список приложений на вашем устройстве. Найдите приложение, которое вы пытаетесь протестировать, и удалите его.
Очевидно, что при установке одного и того же приложения под одной командой под другим идентификатором пакета, если вы начинаете не с нуля, есть некоторые ссылки на фреймворки, которые не работают.
Надеюсь, это кому-нибудь поможет.
Я только что очистил проект и Clean Build Folder
по меню продукта
У меня была та же проблема, и я смог ее исправить, заново загрузив WWDR (Apple Worldwide Developer Relations Certification Authority)
, Скачать отсюда:
и установите Всегда доверять цепочке для ключей. Изменение на Use System Default
это работает для меня, я надеюсь, что это поможет вам
В моем случае цепочка для ключей показывает сертификат как недоверенный, чтобы решить эту проблему, я установил параметры доверия сертификата как "Всегда доверять". Установка сертификата "Всегда доверять" была основной причиной сбоя. Я не смог установить приложение на устройство. Решил это, установив параметр доверия в "Системные значения по умолчанию" вместо "Всегда доверять". Это сработало для меня.
У вас, вероятно, нет правильной арки в этой библиотеке, вы можете сделать
file /private/var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/testapp.app/Frameworks/libswiftCore.dylib
и он должен показать вам арки, которые находятся в этой библиотеке... Я не уверен, как вы связываете, но это, вероятно, не правильный путь (если libswiftcore является фабричной библиотекой, если это какая-то дополнительная библиотека, тогда вероятно не правильно скомпилировано)
Вы видите те же симптомы, если вы работаете в Xamarin Studio и ссылаетесь на переносную библиотеку, для которой вам нужно сделать приманку PCL и переключиться на хитрость. Это происходит, если ссылочный проект устарел по отношению к указанной библиотеке. Я обнаружил, что обновил мою общую библиотеку до более новой среды, обновил свои пакеты, но не обновил свои пакеты iOS для соответствия. Обновление пакетов решило эту ошибку для меня.
Для чего это стоит, я столкнулся с аналогичной ошибкой в XCode 9.0.1. Я попытался удалить и переустановить все мои сертификаты, но когда я переустанавливал, они, казалось, запомнили настройку доверия, которую я имел ранее. То, что в итоге сработало для меня (кажется), отключило настройку "Всегда доверять" сертификата "Apple Worldwide Developer Relations Certification Authority" с последующей перезагрузкой. Что за загадочная проблема!
Я решаю проблему, проверив мои локальные цепочки для ключей. Держите логин.
Я столкнулся с этой проблемой с XCode 9. Ничего из вышеперечисленного не сработало. Это помогло мне:
Project > Build Settings > Swift Compiler - Search Path: Setting "Import Paths"
в $(PROJECT_DIR)
(Рекурсивный)
Я столкнулся с этой проблемой только на симуляторе. Кажется, это связано с некоторыми недействительными правами в нашем приложении, но проблема не появляется, когда мы запускаем на устройстве.
В моем случае после удаления удаляются все сертификаты, созданные Xcode и загруженные. Пусть xcode 8.1 управляет сертификацией приложения, оно работает хорошо!!! Надеюсь, что это может кому-то помочь.
В моем случае это была проблема с одним из контейнеров, которые я использовал. В итоге я удалил этот модуль и поместил код из него в свой проект вручную.
Это решило мою ошибку
Повторно загрузите WWDR (Apple Worldwide Certification Authority), выберите опцию "Использовать системные настройки по умолчанию".
Вы можете восстановить свой сертификат и перезагрузить ваш iPhone.
Это работа для меня, я надеюсь, что это поможет вам.
Столкнулся с той же проблемой
- срок действия моего сертификата разработчика истек, поэтому создали новый сертификат разработчика и загрузите
- очистить и перезапустить XCode это работает для меня
Я решил использовать эти трюки.
Шаг 1:
Перейдите в настройки сборки проекта и добавьте параметр @executetable_path/Frameworks в Runpath Search Paths.
Шаг 2:
Перейдите к настройкам целевой сборки и добавьте параметр @executetable_path/Frameworks в Runpath Search Paths и Framework Search Paths.
Шаг 3:
Повторно загрузите WWDR (Apple Worldwide Certification Authority), выберите опцию "Использовать системные настройки по умолчанию".
Шаг 4:
Удалить все производные данные с помощью терминала
rm -rf ~/ Библиотека / Разработчик /Xcode/DerivedData/*
Шаг 5:
Удалите все сертификаты и переустановите его в связку ключей. Я включил опцию Использовать систему по умолчанию.
Шаг 6:
Перезапустите Xcode.