Добавление поддержки Карфагена в существующий проект
Я разбудил проект 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]()