Sto riscontrando problemi nel compilare correttamente lo spazio di lavoro con Cocoapods. Ci sono 3 progetti nello spazio di lavoro, ognuno con il proprio obiettivo:Configurazione di Cocoapods con una libreria statica esistente e un'applicazione iOS
- libPods - Cocoapods libreria statica con tutte le dipendenze esterne
- LIBCOMMON - La mia libreria statica dove tengo tutti i miei codice condiviso (basi controllore, networking codice, comune interfaccia utente, ecc)
- myApp - la mia applicazione iOS
Sia LIBCOMMON e myApp richiedono le dipendenze esterne dalle libPods. Inizialmente ho pensato che avrebbe funzionato in questo modo:
- libPods costruisce
- link LIBCOMMON contro libPods e costruisce
- link MyApp con LIBCOMMON e costruisce
In questo scenario LIBCOMMON "possiede" i baccelli , e poi poi myApp si limita a link a libCommon come ho sempre fatto pre-Cocoapods ... ma apparentemente le librerie statiche non amano essere collegate con librerie statiche (ho un sacco di errori dinamici di libreria). Ho letto su un problema github da qualche parte che invece dovrei creare libPods e libCommon e quindi myApp dovrebbe collegarsi a entrambe le librerie. In questo momento il mio podfile simile a questa:
workspace 'MyApp.xcworkspace'
platform :ios, '5.0'
link_with ['Common', 'MyApp']
target 'MyApp' do
xcodeproj 'MyApp.xcodeproj'
pod 'AFNetworking', '1.1.0'
pod 'TTTAttributedLabel', '1.6.0'
pod 'JSONKit', '1.5pre'
pod 'Reachability', '3.1.0'
end
Con questa impostazione, myApp possiede tutti i baccelli, e poi nel LIBCOMMON costruire impostazioni a specificare il percorso per le intestazioni pod. Questo va bene fino a quando non cerco di usare una delle classi in libCommon. Una volta che lo faccio, ottengo uno di quegli errori _OBJC_CLASS_$_Blah
(che mi dice che anche se le intestazioni sono disponibili, non è ancora collegata correttamente). Quando provo a collegare manualmente libCommon in "Build Phases" ottengo un sacco di errori di simboli duplicati (che mi lascia credere che sia già collegato?). Che diamine?
Qual è il modo per farlo correttamente e come dovrebbe essere il mio podfile?
Non ho idea di come siate così veloci a rispondere ai cocoapodi, Fabio, ma solo una nota che è molto apprezzata! Ho avuto un problema simile prima e l'opzione 'esclusiva' lo risolve. – Stew
Ho impostato come suggerito e la destinazione MyApp viene compilata correttamente finché non tento di utilizzare una classe da Common (ad esempio aggiungendo questa riga: MyObject * objectFromCommon = [[MyObject alloc] init]; genera un _OBJC_CLASS_ $ Errore _MyObject). L'evidenziazione di sintassi/sintassi è comunque valida, il che mi porta a credere che le intestazioni siano disponibili ma la lib non è ancora collegata. Pensieri? – user2393462435
@ user2393462435, è necessario collegare manualmente il target 'Common' con il target' MyApp' nella fase di costruzione del framework (CocoaPods non gestisce i target). – Fabio