Управление зависимостями нескольких целей с помощью Cocoapods
Я только начал возиться с cocoapods для управления зависимостями моих проектов iOS. В настоящее время я пытаюсь интегрировать модульные тесты с помощью GHIOSUnit. Я следовал всем их инструкциям и пробовал их образцы тестов, и все это работало как шарм.
проблемы начинаются, когда я начинаю использовать мои файлы проекта для тестирования.
Я использую AFNetworking для связи с клиентским сервером и всякий раз, когда я получаю доступ к моему sharedClient 'CRLClient', обертка для AFHTTPClient, это дает мне неопределенные ошибки символов.
Undefined symbols for architecture armv7:
"_OBJC_METACLASS_$_AFHTTPClient", referenced from:
_OBJC_METACLASS_$_CRLClient in CRLClient.o
"_OBJC_CLASS_$_AFJSONRequestOperation", referenced from:
objc-class-ref in CRLClient.o
"_OBJC_CLASS_$_AFHTTPClient", referenced from:
_OBJC_CLASS_$_CRLClient in CRLClient.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
файл pod для управления зависимостями выглядит следующим образом
workspace 'Storyboards.xcworkspace'
platform :ios, '5.0'
pod 'AFNetworking', '1.1.0'
target :UnitTests, :exclusive => true do
pod 'GHUnitIOS', '0.5.6'
end
фактическая цель проекта строит отлично и отлично работает с AFNetworking.
P. S. Я требуемый, чтобы добавить все файлы должны быть проверены, чтобы быть добавлены в UnitTest цель. Тогда что делает добавление "целевой зависимости" на этапах сборки?
In коротко,
- как разделить общие зависимости между различными целями?
- что действительно делает добавление целевых зависимостей, если мне все еще нужно добавить каждый файл в новую цель?
1 ответов
С помощью
target :UnitTests, :exclusive => true do
pod 'GHUnitIOS', '0.5.6'
end
вы говорите, что единственная библиотека, которую вы хотите связать с UnitTests
цель GHUnit
в основном говорят, что вы не хочу AFNetworking
быть связанным также. Проблема в том, что похоже, что вы также импортируете свой AFHTTPClient
подкласс в UnitTests
где он не может найти компоненты AFNetworking, с которыми он пытается связаться.
чтобы исправить это, вы должны иметь возможность удалить эксклюзивный вызов
target :UnitTests do
pod 'GHUnitIOS', '0.5.6'
end
С этим вы свяжете GHUnit
только на UnitTests
цель, но ссылка AFNetworking
для обоих. "Цель по умолчанию будет включать зависимости, определенные вне блока, если не указан параметр: exclusive => true.(от здесь)