Добавление поддержки Carthage в существующий проект
Я разбудил проект AEXML и пытаюсь добавить поддержку Carthage. Я добавил цель фреймворка и создал новую схему, которая помечена как общая (см. Скриншоты ниже). Я умею бегать carthage build
и в моем Carthage/Build/iOS
Я вижу:
При перетаскивании результирующего AEXML.framework
файл в моем примере приложения, который будет построен проект, однако после запуска я получаю:
Я чувствую, что где-то напутал, но не совсем уверен, как это исправить.
3 ответа
Вы должны добавить скрипт запуска в фазе сборки вашего примера проекта, например:
На вкладке настроек "Фазы сборки" целевого приложения нажмите значок "+" и> выберите "Фаза запуска нового скрипта". Создайте скрипт запуска со следующим содержимым:
/usr/local/bin/carthage copy-frameworks
and add the paths to the frameworks you want to use under “Input Files”, e.g.:
$(SRCROOT)/Carthage/Build/iOS/Box.framework
$(SRCROOT)/Carthage/Build/iOS/Result.framework
$(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework
Я пытался сделать это самостоятельно, добавив в скрипт, чтобы проверить, была ли найдена каждая инфраструктура в BUILD_PRODUCTS_DIR, а затем рекурсивно скопировала их, если нет. Когда это не сработало, я столкнулся с этой проблемой связывания:
dyld: библиотека не загружена: @rpath/XCTest.framework/XCTest Ссылка на: .../build/Products/Debug-iphonesimulator/Specta.framework/Specta Причина: изображение не найдено
В конце концов я попытался создать фазу копирования файлов и включил свои фреймворки и dSYM, создав группы, а затем переместил все это в группу Frameworks в Xcode 7.2. Мои проблемы с ссылками полностью исчезли.
Ошибка у вас указывает на то, что каркас двоичного файла не был найден во время выполнения. Ответ от Abner Zhong сработает в большинстве случаев, но иногда приходится стараться изо всех сил (для меня это была цель юнит-тестов). Чтобы заставить его работать, Карфаген README предлагает:
В редких случаях вам может потребоваться скопировать каждую зависимость в продукт сборки (например, чтобы встроить зависимости во внешнюю среду или убедиться, что зависимости присутствуют в тестовом комплекте). Для этого создайте новую фазу сборки "Копировать файлы" с назначением "Frameworks", а затем добавьте туда ссылку на фреймворк.