Question

J'ai ce projet principal qui générera une bibliothèque statique (appelez-la MySDK).J'ai un composant (appelez-le Analytics) en tant que cocoapod privé.

Je me retrouve donc avec une structure de fichier comme celle-ci :

+ MySDK
    - src
+ Pods
    + Pods
        - Analytics

Chaque projet a ses propres tests, mais maintenant je dois faire des tests d'intégration donc dans mon Podfile j'utilise link_with, mais chaque fois que je fais cela, je ne peux même pas exécuter les tests d'origine car j'obtiens un tas de duplicate symbol les erreurs:

duplicate symbol _OBJC_METACLASS_$_PodsDummy_Pods in:
    /.../DerivedData/Build/Products/Release-iphonesimulator/libPods.a(Pods-dummy.o)
    /.../DerivedData/Build/Products/Release-iphonesimulator/libMySDK.a(Pods-dummy.o)
...
duplicate symbol _MYPREFIXFileTableIDColumnName in:
    /.../DerivedData/Build/Products/Release-iphonesimulator/libPods.a(MYPREFIXDatabaseConstants.o)
    /.../Build/Products/Release-iphonesimulator/libMySDK.a(MYPREFIXDatabaseConstants.o)

Toutes les erreurs viennent de mon Analytics composant.Tous les fichiers posant problème ont Fonctions C (Je m'occupe directement de SQLite) et/ou (global) constantes, ou ils sont catégories, mais ils sont tous préfixés.

Mon Podfile ressemble à ça:

platform :ios, '7.0'
link_with ['MySDK', 'MySDKTests']
pod 'Analytics', '0.0.1'

Mon podspect pour Analytics ressemble à ça:

Pod::Spec.new do |s|
  s.name     = 'Analytics'
  s.version  = '0.0.1'
  s.platform = :ios
  s.summary  = "Analytics utility"
  s.homepage = 'http://google.com'
  s.author   = { 'Me' => 'me@me.com' }
  s.source   = { :git => 'https://github.com/Company/Analytics.git', :tag => '0.0.1' }
  s.source_files = 'Analytics/**/*.{h,m}'
  s.requires_arc = true
  s.ios.deployment_target = '6.0'
end

Y a-t-il une raison pour laquelle j'obtiens ces erreurs ?Dois-je compiler ces fichiers sans arc ou utiliser un indicateur spécial ?

Des idées

Était-ce utile?

La solution

J'ai finalement réussi à le faire fonctionner!

Je n'aurais pas dû lier mes pods à MySDKTests, puisque le produit final (MySDK, une bibliothèque, était déjà liée à Analytics).

J'ai cependant ajouté ce qui suit à mon podspec déposer:

  s.public_header_files = 'Analytics/**/*.h'

  s.xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(SRCROOT)/Pods/Headers/Analytics"' }

La deuxième ligne n'est pas vraiment nécessaire car elle ne modifie pas mon MySDKTests cible.j'ai dû ajouter HEADER_SEARCH_PATHS à mon MyDSKTests pour rendre ces en-têtes disponibles pour les tests.

J'ai lu que certaines personnes utilisent avec succès LIBRARY_SEARCH_PATHS à la place, mais cela n'a pas fonctionné pour moi.Si quelqu'un souhaite expliquer pourquoi, ce serait formidable, mais pour l'instant, je laisserai ma solution ici à d'autres personnes au cas où elles rencontreraient un problème similaire.

Voir cette autre question pour des informations connexes

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top