Добавление поддержки 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", а затем добавьте туда ссылку на фреймворк.

Вы можете сделать это здесь: Настройки цели XCode

Другие вопросы по тегам