Dyld: библиотека не загружена: @rpath с iOS8
Я создаю инфраструктуру iOS с Xcode6 и iOS8. Когда я связываю это с приложением iOS и пытаюсь запустить его на устройстве, я получаю эту ошибку
dyld: Library not loaded: @rpath/FrameworkName.framework/FrameworkName
Referenced from: /private/var/mobile/Containers/Bundle/Application/0F2C2461-A68B-4ABA-A604-B88E6E9D1BB1/AppName.app/AppName
Reason: image not found
Параметр сборки Pathpath Search Paths для рамки устанавливается по умолчанию как
'@executable_path/Frameworks', '@loader_path/Frameworks'
Я не мог найти документацию, связанную с этим. Это было что-то новое, появившееся в Xcode6, и я ожидаю, что он просто будет работать, просто включив фреймворк в любое приложение, которое ему нужно.
Ответы
Ответ 1
Чтобы сделать эту работу
-
В настройках проекта проекта измените каталог установки с
'/Library/Frameworks' to '@executable_path/../Frameworks'
-
В проекте, который включает эту структуру, добавьте фазу файлов копий и скопируйте эту фреймворк в папку "Рамки". После этого убедитесь, что эта структура указана в разделе "Встроенные двоичные файлы".
Ответ 2
Проблема устранена с помощью этого ответа. Согласно @vladof81:
На целевой вкладке "Общие" есть поле "Встроенные двоичные файлы". Когда вы добавляете фреймворк, устраняется сбой.
Ссылка здесь на форумах разработчиков Apple.
Ответ 3
Я получал эту ошибку в библиотеке, установленной через CocoaPods. Очистка папки сборки (cmd + option + shift + k
), а затем выполнение чистой (cmd + shift + k
) была тем, что в конечном итоге разрешило эту проблему для меня.
Ответ 4
Проверьте, можете ли вы найти структуру в контексте:
Этапы сборки> Вставить каркас>
Если нет, просто добавьте этот фреймворк в "Встроить фреймворки" после добавления этого фреймворка в каталог вашего проекта "Фреймворки".
![enter image description here]()
Ответ 5
Если вы используете Карфаген
Запустите carthage update
на терминале
Перейдите в "Настройки проекта" → "Фазы сборки" → "Каркасные структуры копирования"
Добавить строку в входные файлы:
$(SRCROOT)/Carthage/Build/iOS/YOURLIBRARY.framework
Добавьте эту строку в выходные файлы:
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/YOURLIBRARY.framework
Ответ 6
Для меня это из-за проблемы с SSL, я установил мой разработчик, сертификаты распространения на моем Mac (Keychain) на "Always Trust" для одного из моих других проектов. Мне пришлось изменить их на "Использовать системные значения по умолчанию". он работал у меня тогда!
Ответ 7
В дополнение к вышеуказанным решениям перепроверьте пути фреймворков, включенных в ваше приложение в разделе
Настройки сборки → Пути поиска → Пути поиска в каркасе
Ответ 8
У меня также была такая же проблема, когда я не смог запустить приложение, и приложение сработало с сообщением выше:
dyld: библиотека не загружена: @rpath/FrameworkName.framework/FrameworkName Ссылка из:/private/var/mobile/Containers/Bundle/Application/xxxxxxxxxxxxxxxxxxx
Причина: изображение не найдено
Вот мой подход, который помог мне решить эту ошибку:
1.Пожалуйста, удалите приложение с устройства, очистите сборку, а затем перестройте и запустите на устройстве.
2.Если вышеуказанные шаги вам не помогут, проверьте, пожалуйста, следующие настройки:
Из "TARGET" > "Настройки сборки" > "Пути поиска пути", а затем проверьте значения "$ (унаследованные)" и "@executable_path/Frameworks", не стесняйтесь добавить, что они не существуют.
Создайте приложение и запустите его на устройстве
Ответ 9
Когда ни одно из этих решений не работает:
- (Необязательно) Получите от здесь четкие сведения о различных типах путей поиска
- Убедитесь, что ваши пути к файлам
.framework
добавлены в Build Settings -> Framework Search Paths
. Вы можете хранить все файлы фреймворка где-нибудь в App/libs/
, добавить эту папку и включить рекурсивно.
- Убедитесь, что ваши пути к файлам
.a
добавлены в Build Settings -> Library Search Paths
.
![enter image description here]()
Ответ 10
Сделал библиотеку, которая показывает не загруженную, измененной с обязательной на необязательную в связанных двоичных файлах и каркасах. Теперь она работает отлично
Ответ 11
Я установил сторонние библиотеки, используя Cocoapods. Получил ту же ошибку, попробовал все, но наконец понял, что у меня не было use_frameworks! в моем файле под.
Так что удалил установленную на данный момент библиотеку, добавил use_frameworks! строка в файле pod, переустановил библиотеки и у меня все заработало.