Dyld: библиотека не загружена кокоаподами 0.37 и Xcode 6.3

Я читал все проблемы об ошибке:

dyld: Library not loaded: @rpath/Bolts.framework/Bolts Referenced from: /private/var/mobile/Containers/Bundle/Application/1542F906-CCE1-4181-AC7C-B5E3EE50E7D7/eBikeMotion.app/eBikeMotion Reason: no suitable image found. Did find:

Что делает мое приложение неспособным работать на реальном устройстве (но оно работает без каких-либо проблем в симуляторе. До некоторой степени я думал, что это проблема с фреймами, которые я устанавливал, но после установки вручную оригинальной, которая выбрасывала ошибку, Alamofire и следующая Framework, бросающая ошибку, были следующей в алфавитном порядке (Bolts, as вы можете увидеть в фрагменте кода) Поэтому я пришел к выводу, что это действительно CocoaPods, который производит эти ошибки. У меня есть последняя версия (0.37) с чистой установкой, Iv'e попытался создать новый проект, я пробовал все предлагаемые решения по этой проблеме без везения, поэтому мне нужно открыть проблему, надеюсь, что кто-то может мне помочь.

С уважением.

Ответы

Ответ 1

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

Решение этой проблемы касается следующих шагов:

  • Деинтегрируйте проект cocoapods (вы можете установить инструмент с помощью sudo gem install cocoapods-deintegrate).

cocoapods-deintegrate на Github

  1. Измените свой подфайл:

    Вы должны определить целевое соединение с помощью link_with 'ProjectName'.

    Вы должны определить цель для своих контейнеров: target 'ProjectName' do [pods here] end.

  2. Сделайте установку с помощью pod install

  3. После этого перейдите в XCode и проверьте следующие настройки:

    В настройках проекта в разделе "Конфигурации" проверьте, что в Debug and Release у вас есть набор конфигурации с именем Pods-ProjectName.[debug|release]

    В вашу цель в разделе "Фазы сборки" вы должны иметь три новые фазы, которые следует называть: Check Pods Manifest, Embed Pods Frameworks и Copy Pods Resources.

  4. Выполните очистку, затем выполните сборку, а затем запустите на свое устройство.

Что это.

Ответ 2

В моем случае я выполнил вышеупомянутый ответ @Jorge, но это не решило проблему. Точная ошибка была немного иной, поскольку отсутствующий файл был @rpath Pods.framework/Pods. Я, наконец, разрешил его с помощью проблемы CocoaPods # 3586:

Перейдите в раздел цели > Общие > Связанные структуры и библиотеки установите для Pods.framework и Pods_target.framework значение Optional.

По-прежнему пытаюсь выяснить, почему именно... этот ответ содержит некоторую информацию: what-does-it-mean-to-weak-link-a-framework

Ответ 3

Мне пришлось исправить две проблемы:

  • Перейдите к каждой цели, затем Build Phases затем Link Binary With Libraries и выберите Pods.framework. Установите его на Optional.

  • Cocoapods не создали необходимые сценарии запуска для моей второй цели. У моей первой цели были все сценарии. Второй нет. Поэтому я скопировал все недостающие сценарии запуска от первой до второй цели. Вам нужно нажать на маленький знак "+" в верхнем левом углу, добавить пробег script и вставить script из другой цели. Я сделал это для Check Pods Manifest.lock, Copy Pods Resources и Embed Pods Frameworks.

Затем он запустился на устройстве. Наконец-то.

Ответ 4

Имел такой же вопрос, добавляя контейнеры в WatchKit Extension. Связывание основной цели с приложением Watch не является лучшим вариантом. Выяснилось, что cocoapod 0.37.2 не добавил 'Embed Pods Frameworks' script в фазу сборки.

Script: "${SRCROOT}/Pods/Target Support Files/Pods-ExtensionName/Pods-ExtensionName-frameworks.sh"

Ответ 5

Для того, чтобы кокоаподы генерировали фазы сборки, проверьте подписи Manifest, Embed Pods Framework и Copy Pods Ресурсы:

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

2 - Деинтегрируйте блок (или просто удалите файлы самостоятельно)

3 - Запустите новую установку pod

Это сработало для меня. Без первого шага он никогда этого не делал.