Управление зависимостями нескольких целей с помощью Cocoapods

Я только начал возиться с cocoapods для управления зависимостями моих проектов iOS. В настоящее время я пытаюсь интегрировать модульные тесты с помощью GHIOSUnit. Я следовал всем их инструкциям и пробовал их образцы тестов, и все это работало как шарм.

Project Setup 1enter image description here

проблемы начинаются, когда я начинаю использовать мои файлы проекта для тестирования.

Я использую 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 цель. Тогда что делает добавление "целевой зависимости" на этапах сборки?

enter image description hereenter image description here

In коротко,

  1. как разделить общие зависимости между различными целями?
  2. что действительно делает добавление целевых зависимостей, если мне все еще нужно добавить каждый файл в новую цель?

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.(от здесь)