Добавление поддержки Карфагена в существующий проект

Я разбудил проект AEXML и пытаюсь добавить поддержку Carthage. Я добавил цель фреймворка и создал новую схему, которая помечена как общая (см. Скриншоты ниже). Я могу запустить carthage build и в моем Carthage/Build/iOS я вижу:

enter image description here

При перетаскивании результирующего файла AEXML.framework в мое приложение-пример проект будет построен, однако после запуска я получу:

enter image description here

Я чувствую, что где-то все испортил, но я не совсем уверен, как это исправить.

enter image description here

Ответ 1

Вы должны добавить скрипт запуска в вашем примере проекта "Build Phase", например:

На вкладке настроек цели приложения "Фазы сборки" нажмите значок "+" и> выберите "Фаза запуска нового скрипта". Создайте скрипт запуска со следующим содержимым:

 /usr/local/bin/carthage copy-frameworks

а затем добавьте пути к фреймворкам, которые вы хотели бы использовать в разделе "Входные файлы", например:

 $(SRCROOT)/Carthage/Build/iOS/Box.framework
 $(SRCROOT)/Carthage/Build/iOS/Result.framework
 $(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework

Ответ 2

Я попытался сделать это сам, добавив в script, чтобы проверить, была ли каждая структура найдена в BUILD_PRODUCTS_DIR, а затем рекурсивно копировать их, если нет. Когда это не сработало, я столкнулся с этой проблемой связи:

dyld: библиотека не загружена: @rpath/XCTest.framework/XCTest Ссылка из:.../build/Продукты/Debug-iphonesimulator/Specta.framework/Specta Причина: изображение не найдено

Наконец, я попытался создать фазу файлов копий и включил свои фреймворки и dSYM, создав группы, а затем переместил их все в группу Frameworks в Xcode 7.2. Мои проблемы с увязкой полностью исчезли.

Ответ 3

Ошибка, с которой вы указываете, что двоичный файл framework не был найден во время выполнения. Ответ Абнер Чжун будет работать в большинстве случаев, но иногда вам приходится стараться усерднее (для меня это была цель тестирования единиц). Чтобы заставить его работать Carthage README предлагает:

В редких случаях вы можете также скопировать каждую зависимость в продукт сборки (например, встраивать зависимости во внешнюю структуру или убедиться, что зависимости присутствуют в тестовом комплекте). Для этого создайте новую фазу сборки "Копировать файлы" с помощью назначения "Рамки", а затем добавьте ссылку на фреймворк.

Вы можете сделать это здесь: Настройки целевого объекта Xcode