Я пытаюсь запустить приложение Swift на своем iPhone 4s. Он отлично работает на симуляторе, и мой друг может успешно запустить его на своем iPhone 4s. У меня есть iOS 8 и официальная версия Xcode 6.
Я пробовал
$(inherited) @executable_path/Frameworks
Ниже приведена ошибка целиком
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
Для меня ни один из предыдущих решений не работал. Мы обнаружили, что в настройках сборки есть флаг "Всегда встраивать строгие стандартные библиотеки", для которого необходимо установить значение "ДА". По умолчанию это было НЕТ!
Build Settings > Always Embed Swift Standard Libraries
После этого очистите проект до его сборки.
Для маленьких читателей есть некоторые объяснения. Наиболее важная часть:
установите для встроенного содержимого код Swift Code (EMBEDDED_CONTENT_CONTAINS_SWIFT) в YES в приложении, как показано на рисунке 2. Этот параметр сборки, определяющий, содержит ли целевой продукт встроенный контент с кодом Swift, сообщает Xcode о включении стандартных библиотек Swift в ваше приложение когда установлено значение YES.
Флаг ранее назывался Embedded Content Contains Swift Code
Удивительно, но все, что я сделал, было "Очистить" мой проект (shift + cmd + K), и это сработало. Похоже, что это связано с сертификатом.
Я начал получать эту ошибку при удалении:
@executable_path/Frameworks
из Runpath Search Paths
в моих настройках сборки. Заменив его, все снова исправлено (спасибо за контроль источника!)
Я не знаю, как это произошло, но, похоже, для бинарного файла требуется найти встроенную среду выполнения Swift.
@loader_path/../Frameworks
для модульных тестов macOS и @loader_path/Frameworks
для модульных тестов iOS, которые нужно было добавить.
Для устройства вам также необходимо добавить динамическую структуру в раздел " Embedded binaries
" на вкладке " General
" проекта.
В Xcode 8 опция для Embedded Content Contains Swift Code
опцию Embedded Content Contains Swift Code
больше недоступна.
Он был переименован в "Always Embed Swift Standard Libraries = YES"
Я думаю, что это ошибка, когда сертификаты генерируются непосредственно из Xcode. Чтобы разрешить (по крайней мере, в Xcode 6.1/6A1052d):
ОК, разделив здесь еще одну причину этой ошибки. Мне потребовалось несколько часов, чтобы разобраться в этом.
В моем случае политика доверия моего сертификата в Keychain Access была Всегда доверять, изменив ее на значения по умолчанию, решила проблему.
Чтобы открыть окно настроек сертификата, дважды щелкните сертификат в списке сертификатов доступа к цепочке ключей.
У меня была эта проблема с запуском моих тестов Swift (но не для моего приложения). Оказывается, для теста необходимо иметь в настройке Runpath Search Paths
больше, чем @executable_path/Frameworks
для тестовой цели. Настройка путей поиска Runpath на следующее сработала для меня:
$(inherited)
@executable_path/Frameworks
@loader_path/Frameworks
carthage copy-frameworks
так как это была вторичная зависимость (та, которую фреймворк я использовал добавил)
Я думаю, что 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
Вы должны установить Runpath Search Paths
в @executable_path/Frameworks
, как показано на следующем скриншоте настроек сборки:
Если у вас есть встроенные фреймворки в Swift, вы можете установить YES
Параметры сборки Embedded Content Contains Swift Code
.
otool -L
для этих dylibs сказал мне, что они уже используют @rpath/...
для своего собственного пути. Теперь, установив путь поиска Runpath к пути к этой папке, я могу запустить свой инструмент, и он найдет дилибы, которые хранятся в папке рядом с ним.
Пусть проект P импортирует пользовательскую библиотеку L, тогда вы должны добавить L в
P -> Build Phases -> Embed Frameworks -> +
. Это работает для меня.
У меня была такая же проблема после перехода на новый Mac, и после нескольких часов, пробовав все предлагаемые ответы в вопросах, ничто из этого не сработало для меня.
Решение для меня заключалось в установке этого отсутствующего сертификата. http://developer.apple.com/certificationauthority/AppleWWDRCA.cer
Нашел ответ здесь. https://stackoverflow.com/questions/13820680/this-certificate-was-signed-by-an-unknown-authority
Я решил, удалив полученные данные, и на этот раз он работал правильно. Пробовал с помощью Xcode 7.3.1GM
Измените Копировать ресурсы подстраков для цели:
"${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-resources.sh"
в
"${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-frameworks.sh"
Ни один из решений не работал у меня. Исправлена ошибка при перезагрузке телефона. Странно, но это сработало.
После того, как мы все опробовали, я наконец узнал, что сборка не всегда включает каждую деталь снова и снова. Возможно, для ускорения процесса... Чтобы обеспечить упаковку WHOLE перед запуском на устройстве, сначала выполните очистку: Shift-Cmd-K. Затем постройте с помощью: Cmd-B. После этого запустите его на своем устройстве. Легко. С наилучшими пожеланиями всем вам симпатичные парни в этом месте!
Для меня, пробовав все без успеха, что было сделано, чтобы удалить @executable_path/Frameworks
из Packaging section
(не знаю, как он оказался там в первую очередь)
В моем случае это было просто имя моей цели:
Я переименовал его следующим образом: MyApp.something и появилась такая же проблема. Но я видел в окне настроек сборки, имя моего модуля продукта было изменено следующим образом MyApp-something. Итак, я удалил точку в моем целевом имени (MyAppSomething), и проблема исчезла.
ни одно из этих решений, похоже, не сработало, но когда я изменил разрешение сертификата World Wide Developer на Use System defaults
, тогда это сработало. Я добавил шаги и скриншоты в ссылку ниже
Я бы посоветовал вам зарегистрировать билет в отчете об ошибке Apple, как указано здесь, поскольку Apple действительно должна решить эту массивную ошибку: https://stackoverflow.com/questions/24993752/os-x-framework-library-not-loaded-image-not-found
Там много ответов, но может быть, мой ответ поможет кому-то.
У меня такая же проблема. Мое приложение отлично работает на Simulator, но на устройстве было разбито, как приложение "Обещает", и дает ошибку, как указано выше. Я пробовал все ответы и решения. В моем случае, у моего проекта у меня несколько целей. Я создал дублируемую цель B от цели A. Целевая точка B отлично работает, а цель A разбилась. Я использую разные объекты изображения для каждой цели. После поиска и выполнения google я нашел кое-что, что могло бы помочь кому-то.
Сбой приложения прекращается, когда я изменяю название Launch images для обоих приложений. например, название объекта запуска Launch Image LaunchImage A. Target B Lunch Image имя актива LaunchImage B и назначается должным образом на вкладке "Общие" для каждой цели. Мои приложения отлично работают.
Xcode 7.2, iOS 9.2 на одном устройстве, 9.0 на другом. У обоих была ошибка. Не знаю, что изменилось, что вызвало это, но решения выше для WWDR были верны для меня. Установите этот сертификат и проблему.
https://forums.developer.apple.com/message/43547 https://forums.developer.apple.com/message/84846
Я использую 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. Не решение, но, по крайней мере, это позволяет мне двигаться вперед с моей работой.
Это сообщение об ошибке также может быть вызвано при обновлении Xcode (а затем и новой версии Swift), и ваш проект использует фреймворк, встроенный/скомпилированный со старой/предыдущей версией Swift.
В этом случае исправление фреймворка и повторное добавление исправят проблему.
У меня есть несколько версий Xcode, установленных одновременно. Структура была построена с более новой версией Xcode. Приложение, которое я пытался скомпилировать, было с более старой версией Xcode. Когда я очищал и скомпилировал как фреймворк, так и приложение с той же версией Xcode, тогда все сработало.
Для меня создание приложения командной строки MacOS Swift, зависящего от сторонних Swift-библиотек (например, SQLite), ни одно из вышеперечисленных решений, похоже, не работало. То, что работа непосредственно добавляла следующий путь к моим путям поиска пути Путь в настройках сборки:
/Applications/Xcode.app/Contents//Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/
Это дало предупреждение во время работы, говоря, что Xcode нашел 2 версии libswiftCore - что имеет смысл. За исключением того, что не включая эту строку, Xcode не обнаружил никаких версий libswiftCore.
Во всяком случае, это будет для меня, даже если это не кажется правильным - мое приложение - это просто утилита, которую я не собираюсь распространять и, по крайней мере, сейчас работает!
Самый простой и простой в использовании способ: очистить и перестроить.
Это решило проблему после того, как вы попробовали ответы выше и не сработали.
Для меня решение приведено ниже. Отключите "Вставить пакеты активов в пакет продукта", и этот вопрос не будет
Я нахожусь на Xcode 8.3.2. Для меня проблема заключалась в том, что сертификат AppleWWDRCA был как в системном, так и в логическом ключе. Убрали оба, а затем добавили только логин-логин, теперь он снова работает отлично. 2 дня потеряно
У меня такая же проблема, и проблема такова:
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
Мое решение ниже:
В TARGET
→ Build Setting
→ Other Linker Flag
→ удалите фреймворк ReactiveCocoa
. Если xxx.framework
, вы знаете, вы должны удалить xxx
.
удалить ReactiveCocoa
Я начал получать эту аналогичную ошибку для тестирования добавления файла S3 с использованием служб AWS. Ниже была ошибка. dyld: библиотека не загружена: @rpath/AWSAutoScaling.framework/AWSAutoScaling
Я искал много, и выше решения также не помогают мне. Ниже ссылки помогли мне решить эту проблему.
https://forums.developer.apple.com/thread/21292
Как говорится, чтобы исправить эту проблему, повторно загрузив WWDR (Всемирный центр сертификации разработчиков сообществ).
Вкратце, попробовали ли вы проверить "Включить биткод = НЕТ". Меня устраивает.
В моем случае мой проект был написан в Object-C и включает одну стороннюю структуру, написанную в swift. Я могу запустить приложение APP как на симуляторе, так и на реальном устройстве в режиме разработчика. Однако, как только я достиг APP с Ad-hoc-профилем и установил этот ipa OTA на реальном устройстве, он разбился. Даже не упомянуть загрузку для хранения. Надеюсь, эта информация поможет.
Если в вашем проекте есть cocoapods и разные схемы, попробуйте запустить обновление pod, которое исправило это для меня.
Из сообщения https://github.com/CocoaPods/cocoapods-integration-specs/pull/24/files, это означает, что swift.dylib нужно подписать, но не удалось. Я даже не создал новый быстрый проект с поддержкой cocoapod.
В моем случае одна из моих целей тестирования работала, а другая - нет. Это давало указанную ошибку с отсутствующей библиотекой или что-то еще. Я сравнил настройки для обоих целевых показателей тестирования и обнаружил, что у вас не было конфигурации для "Test Host", поэтому я скопировал это из рабочей тестовой цели и зафиксировал мою сломанную тестовую цель!
Когда Xcode запрашивает у вас сертификаты reset, вы reset. И приложение может быть запущено на самом устройстве без сбоев с сообщениями об ошибках. Как только эта проблема будет исправлена в одном стремительном проекте. Также фиксируются и другие быстрые проекты с этой проблемой.
Я боролся за них примерно полдня, и я обнаружил, что сертификаты reset снова и снова в портале инициализации не помогают.
В моем случае
Я установил @executable_path/Frameworks
Но я также должен установить "пути поиска Framework"
$(PROJECT_DIR)/Frameworks
изменить как recursive
Что работает для меня.
Я использую Xcode 7.2. Если вы попробовали все вышеперечисленное, и ошибка все еще возникает, попробуйте удалить старый сертификат из Keychain Access! Это такая боль, чтобы наконец исправить это.
Вышеупомянутые решения не сработали для меня. Я исправляю проблему с помощью следующих шагов:
Чтобы добавить к решению Enterprise distribution cert: вы можете открыть Keychain и проверить сертификат. Если есть красный текст, в котором цепочка доверия не может быть проверена или она будет отозвана, она НЕ РАБОТАЕТ! На моем компьютере наш сертификат распространения показывался как отозванный, хотя веб-портал показал, что он все еще действителен. Мы получили новый сертификат распространения, который был зеленым (действительным) в Keychain, и это решило проблему.
Следуя этим шагам, я работал у меня:
Искать Runpath Search Paths
Измените его значение на $(унаследованный) флаг (remove @executable_path/Frameworks).