2012-12-31 11 views
19

CocoaPods domanda:CocoaPods/Podspec e * .framework

ho creato un quadro in bundle con una libreria statica all'interno, a seconda AFNetworking e un pacchetto di risorse (sulla base di questi due tutorial per creare FWKs http://www.blackjaguarstudios.com/blog/programming/2012/11/22/xcode-45-creating-ios-framework-and-hold-my-hand-im-3-years-old e https://github.com/bclubb/iOS-Framework)

Mi piacerebbe creare un podspec in modo che le persone aggiungano semplicemente una riga nel loro Podfile, che, se installata su pod, aggiunga il mio framework e AFNetworking, se necessario.

È possibile?

+0

Tutto è possibile. ;) –

risposta

24

Ho effettivamente fatto questo molto nel mio ufficio. Abbiamo tonnellate di codice sorgente privato che viene riutilizzato parecchio. CocoaPods ha aiutato a far partire i nuovi progetti molto più velocemente e li rende molto più facili da aggiornare.

Mentre è possibile aggiungere il framework al podspec, ho trovato molto più semplice passare semplicemente la libreria e le intestazioni statiche tramite CocoaPods piuttosto che preoccuparsi del framework.

Si dovrà aggiornare il podspec sulla base di un progetto, ma qui ci sono le parti più importanti:

s.source_files = 'StaticLib/Headers/*.h' 
s.preserve_paths = 'StaticLib/libYourLibrary.a' 
s.library = 'YourLibrary' 
s.xcconfig = { 'LIBRARY_SEARCH_PATHS' => '$(PODS_ROOT)/ProjectFolder/LibraryFolder' }  

s.dependency = 'AFNetworking' 

Questo copierà la vostra libreria statica sopra così come portare oltre AFNetworking con il baccello troppo. Ciò renderà la tua lib statica molto più piccola (non dovendone costruire in) e velocizzerà la velocità con cui l'utente può importare il tuo pod.

Se è necessario utilizzare framework, si applica ancora la stessa roba di cui sopra, ma si potrebbe avere qualche ritocco da fare. Tutto il framework è una struttura di cartelle piuttosto carina per lib e intestazioni statiche, quindi perché preoccuparsi di cose extra. La sorgente è comunque ancora incorporata nella lib di lPods.a in ogni caso. Spero che questo ti aiuti.

+0

Grazie, solo sapendo che è mi spingerà a indagare ulteriormente =) – Pasta

+0

Ho provato con questo repo: https://github.com/BugsterIO/BugsterIO-iOS e la seguente riga nel podfile: pod 'BugsterIO' ,: podspec => "https://raw.github.com/BugsterIO/BugsterIO-iOS/0.8/BugsterIO.podspec" . Ma non sta funzionando. Qualche idea? – Pasta

+0

L'errore è: Simboli indefiniti per l'architettura i386: "_OBJC_CLASS _ $ _ Bugster", referenziato da: – Pasta