Gérer les dependencies de plusieurs cibles avec Cocoapods

Je viens de commencer à bricoler avec des cocoapodes pour gérer les dependencies de mes projets iOS. Actuellement, j'essaie d'intégrer des tests unitaires en utilisant GHIOSUnit. J'ai suivi toutes leurs instructions et essayé leurs tests d'échantillons et tout a fonctionné comme charme.

Configuration du projet 1entrez la description de l'image ici

Cependant, les problèmes commencent quand je commence à utiliser mes files de projet réels pour les tests.

J'utilise AFNetworking pour les communications du server client et chaque fois que j'accède à mon sharedClient appelé 'CRLClient', un wrapper pour AFHTTPClient, il me donne des erreurs de symboles non définis.

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) 

Le file pod pour gérer les dependencies ressemble à ceci

 workspace 'Storyboards.xcworkspace' platform :ios, '5.0' pod 'AFNetworking', '1.1.0' target :UnitTests, :exclusive => true do pod 'GHUnitIOS', '0.5.6' end 

La cible réelle du projet se construit bien et fonctionne parfaitement avec AFNetworking.

PS Je dois également append tous les files à tester à la cible UnitTest. Alors qu'est-ce que l'ajout de 'Target Dependency' dans les phases de construction fait?

entrez la description de l'image icientrez la description de l'image ici

En bref,

  1. comment partager des dependencies communes entre différentes cibles?
  2. qu'est-ce que l'ajout de dependencies cibles fait vraiment si je dois encore append chaque file à une nouvelle cible?

En utilisant

 target :UnitTests, :exclusive => true do pod 'GHUnitIOS', '0.5.6' end 

Vous dites que la seule bibliothèque que vous voulez être liée à la cible GHUnit est GHUnit disant principalement que vous ne voulez pas que l' AFNetworking soit également lié. Le problème est qu'il semble que vous AFHTTPClient également votre sous-class AFHTTPClient dans UnitTests où il ne peut pas find les composants AFNetworking vers lesquels il essaie de se lier.

Pour résoudre ce problème, vous devriez pouvoir supprimer l'appel exclusif

 target :UnitTests do pod 'GHUnitIOS', '0.5.6' end 

Avec ceci vous GHUnit seulement à votre cible UnitTests mais AFNetworking aux deux. "La cible inclura par défaut les dependencies définies en dehors du bloc, sauf si l'option: exclusive => true est donnée." (à partir d' ici )