Domanda

Ho questo progetto principale che genererà una libreria statica (chiamalo MySDK). Ho un componente (chiamalo Analytics) come un cacapod privato.

Quindi finisco con una struttura di file come questa:

+ MySDK
    - src
+ Pods
    + Pods
        - Analytics
.

Ogni progetto ha i suoi test, ma ora ho bisogno di fare alcuni test di integrazione, quindi nel mio podfile uso link_with, ma ogni volta che lo faccio non posso nemmeno eseguire i test originali perché ottengo un gruppo di errori duplicate symbol:

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)
.

Tutti gli errori provengono dal mio componente Analytics. Tutti i file che causano un problema hanno c funzioni (ho a che fare con SQLite direttamente) e / o (globale) costanti , o sono categorie , ma sono tutti prefissati.

My Podfile Sembra questo:

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

My PodSCPEC per Analytics Sembra questo:

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
.

C'è una ragione per cui sto ottenendo questi errori? Dovrei compilare questi file come non-arco o utilizzare un flag speciale?

Qualche idea

È stato utile?

Soluzione

Alla fine ho capito per lavorare!

Non avrei dovuto collegare i miei baccelli a MySDKTests, dal momento che il prodotto finale (MySDK, una libreria, stava già collegando contro Analytics).

Ho comunque aggiunto il seguente al mio file podspec:

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

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

La seconda riga non è realmente necessaria perché non modifica il mio obiettivo MySDKTests.Ho dovuto aggiungere HEADER_SEARCH_PATHS al mio MyDSKTests per rendere disponibili tali intestazioni per i test.

Ho letto che alcune persone usano invece con successo LIBRARY_SEARCH_PATHS, ma questo non ha funzionato per me.Se qualcuno si occupa di spiegare perché, sarebbe fantastico, ma per ora lascerò la mia soluzione qui per altre persone nel caso in cui incontrano un problema simile.

Vedi Questa altra domanda per informazioni correlate

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top