Razionalizzazione dello sviluppo del cacao con CocoaPods

CocoaPods è uno strumento di gestione delle dipendenze di facile utilizzo per lo sviluppo di iOS e OS X. Anche se CocoaPods è abbastanza chiaro e semplice da usare, ritengo che molti sviluppatori di cacao siano riluttanti a provarlo. In questo tutorial, ti mostrerò come iniziare con CocoaPods in meno di cinque minuti.


Cos'è CocoaPods?

CocoaPods è uno strumento di gestione delle dipendenze per lo sviluppo di iOS e OS X. Rende la gestione di librerie di terze parti in un progetto Xcode facile e diretta. CocoaPods ha ottenuto una notevole trazione nella comunità di cacao e, di conseguenza, centinaia di librerie open source ora forniscono supporto per CocoaPods. Per avere un'idea di quali librerie sono disponibili attraverso CocoaPods, visita il sito Web di CocoaPods e cerca alcune delle tue librerie di terze parti preferite. Aziende come TestFlight, Mixpanel e Google mettono a disposizione le loro librerie attraverso CocoaPods.


Perché dovrei usare CocoaPods?

Lavorare con le librerie di terze parti in un progetto Xcode non è sempre facile e spesso può essere un problema, specialmente quando si integrano librerie non ARC in un progetto abilitato ARC. Eloy Durán ha avviato il progetto CocoaPods per alleviare questo dolore. Prima di passare a CocoaPods, ho fatto ciò che fa la maggior parte degli sviluppatori; copiano manualmente i file sorgente delle librerie di terze parti in un progetto Xcode e li compilano con il resto del progetto. Anche se questo metodo ha funzionato bene, l'aggiornamento delle dipendenze di un progetto era un processo macchinoso e soggetto a errori.

CocoaPods rende la gestione delle dipendenze di un progetto molto più semplice e intuitiva. Hai solo bisogno di specificare quali dipendenze, o pod, vuoi includere nel tuo progetto e CocoaPods si prende cura di tutto il resto. L'aggiornamento di un pod a una nuova versione è semplice come eseguire un singolo comando sulla riga di comando. Se hai evitato la linea di comando in passato, ora potrebbe essere un buon momento per familiarizzare con esso.


1. Installazione di CocoaPods

Un'altra grande caratteristica di CocoaPods è che è distribuita come una gemma di Ruby. Ciò rende l'installazione di CocoaPods praticamente indolore. Per installare la gemma CocoaPods, il tuo sistema deve avere Ruby e RubyGems installati. Non temere perché sia ​​Ruby sia RubyGems sono probabilmente già installati sul tuo computer.

Apri una nuova finestra di Terminale e digita gemma -v per determinare se RubyGems è installato sul tuo sistema. Se hai bisogno di aiuto per l'installazione di Ruby o RubyGems, Andrew Burgess ha scritto un ottimo tutorial su RubyGems su Nettuts +. In caso di problemi con l'installazione di CocoaPods, è probabile che l'articolo di Andrew abbia la soluzione al tuo problema.

Prima di installare CocoaPods, assicurarsi di aggiornare RubyGems eseguendo il seguente comando sulla riga di comando:

 gem update - system

A seconda della configurazione del sistema, potrebbe essere necessario aggiungere il prefisso a questo comando sudo.

Se vuoi saperne di più su Ruby e Rubygems, Jeffrey Way ha scritto un bel articolo su Ruby su Net Tuts +. Il tutorial di Andrew Burgess che ho menzionato prima fa parte di una serie approfondita chiamata Ruby for Newbies. Vale sicuramente la pena di provarlo.

Installare CocoaPods è facile una volta installati Ruby e RubyGems. Basta eseguire quanto segue:

 gemma installa cocoapods

Una volta installato, configura CocoaPods eseguendo il configurazione del pod comando. Durante il processo di installazione, viene creato l'ambiente CocoaPods e a .cocoapods la directory viene creata nella tua cartella home. Questa cartella nascosta contiene tutte le specifiche del pod disponibili o le specifiche del pod.


2. A partire da CocoaPods

Passo 1

Invece di spiegare come funziona CocoaPods, è molto più facile mostrarti creando un semplice progetto Xcode usando CocoaPods. Apri Xcode e crea un nuovo progetto basato sul Applicazione vuota modello. Assegna un nome al progetto CocoaPods e assicurarsi di abilitare ARC (Automatic Reference Counting) per il progetto (figura 1).

Figura 1

Passo 2

Ora che abbiamo creato il progetto, dobbiamo aggiungere un Podfile. Un Podfile è simile a un Gemfile. È un file di testo che contiene informazioni sul progetto e include anche le dipendenze del progetto, ovvero le librerie gestite da CocoaPods. Chiudere il progetto Xcode e aprire una nuova finestra di Terminale. Passare alla radice del progetto Xcode e creare un nuovo Podfile eseguendo tocca Podfile nel Terminale. Il toccare comando aggiorna il modificato data di un file, ma crea il file per te se non esiste, che è esattamente quello che vogliamo. Assicurati di creare il Podfile nella radice del tuo progetto Xcode.

 tocca Podfile

Passaggio 3

Apri il Podfile nel tuo editor di testo preferito. Al momento della stesura di questo tutorial, la versione corrente di CocoaPods è 0.16. In questa versione, è necessario specificare la piattaforma, iOS o OS X. Questo non sarà più necessario nella prossima versione di CocoaPods (0.17). In questo esempio, diciamo a CocoaPods che puntiamo alla piattaforma iOS come mostrato di seguito. È possibile specificare l'obiettivo di distribuzione del progetto, ma questo è facoltativo. L'obiettivo di distribuzione predefinito è 4.3 per iOS e 10.6 per OS X.

 piattaforma: ios, '6.0'

Passaggio 4

Con la piattaforma specificata, è il momento di creare l'elenco delle dipendenze per il progetto. Una dipendenza consiste della parola chiave baccello seguito dal nome della dipendenza o pod. Un pod è proprio come una gemma, una dipendenza o una libreria che desideri includere in un progetto o in un'applicazione. È possibile specificare facoltativamente la versione della dipendenza come mostrato di seguito.

 pod 'SVProgressHUD', '0,9'

Omettendo il numero di versione di un pod, CocoaPods utilizzerà l'ultima versione disponibile (è ciò che desideri la maggior parte del tempo). Puoi anche aggiungere il prefisso al numero di versione con uno specificatore per dare a CocoaPods un maggiore controllo sulla versione da utilizzare. Gli specificatori sono per lo più auto esplicativi (>, > =, <, <=), ma un identificatore, ~>, potrebbe sembrare strano se non si ha familiarità con RubyGems. Spiegherò cosa ~> significa nell'esempio mostrato di seguito. Le specifiche del pod mostrate di seguito indicano che la versione della libreria di AFNetworking deve essere compresa tra 1.0.1 e 1.1 ma escludendo quest'ultimo. Questo è molto utile se vuoi dare a CocoaPods la possibilità di aggiornare le dipendenze di un progetto quando sono disponibili versioni minori (correzioni di bug), ma di escludere le versioni principali che possono includere modifiche API che potrebbero rompere qualcosa nel tuo progetto.

 pod 'AFNetworking', '~> 1.0.1'

Una dichiarazione di dipendenza ha molte più opzioni di configurazione, che possono essere impostate nel Podfile. Ad esempio, se si desidera lavorare con la versione di bordo sanguinante di una libreria, è possibile sostituire il numero di versione di un pod con :capo come mostrato di seguito. Puoi persino dire a CocoaPods quale fonte usare specificando il repository git o riferendo CocoaPods a una copia locale della libreria. Queste sono le funzionalità più avanzate di CocoaPods.

 pod 'AFNetworking',: head pod 'SVProgressHUD',: git => 'https://github.com/samvermette/SVProgressHUD' pod 'ViewDeck',: local => '~ / Development / Library / ViewDeck'

Passaggio 5

Con il nostro elenco di dipendenze specificato, è il momento di continuare il processo di installazione. Aggiorna il Podfile come mostrato di seguito ed esegui installazione pod nel Terminale. Assicurati di eseguire questo comando nella radice del tuo progetto Xcode dove hai anche creato il Podfile del progetto.

 piattaforma: ios, '6.0' pod 'ViewDeck', '~> 2.2.2' pod 'AFNetworking', '~> 1.1.0' pod 'SVProgressHUD', '~> 0.9.0' pod 'HockeySDK', '~ > 3.0.0 '
 installazione pod

CocoaPods controlla l'elenco delle dipendenze e installa ogni dipendenza come specificato nel Podfile del progetto. L'output sulla riga di comando mostra ciò che CocoaPods sta facendo sotto il cofano. Le ultime due righe sono particolarmente interessanti per noi; CocoaPods crea uno spazio di lavoro Xcode e aggiunge il nostro progetto a quell'area di lavoro. Crea anche un nuovo progetto chiamato Pods, aggiunge le dipendenze elencate a quel progetto e ne collega staticamente una libreria. Il progetto Pod appena creato viene anche aggiunto a quello stesso spazio di lavoro (figura 2).

 Risoluzione delle dipendenze di./ Podfile 'Aggiornamento dei repository delle specifiche Cocoapods 0.17.0.rc7 è disponibile. Risoluzione delle dipendenze per il targetpredefinito '(iOS 6.0) Download delle dipendenze Installazione di AFNetworking (1.1.0) Installazione di HockeySDK (3.0.0) Installazione di SVProgressHUD (0.9) Installazione di ViewDeck (2.2.5) Generazione di file di supporto 2013-03-28 11: 13: 54.663 xcodebuild [1352 : 1207] XcodeColors: load (v10.1) 2013-03-28 11: 13: 54.665 xcodebuild [1352: 1207] XcodeColors: pluginDidLoad: [!] Da ora in poiCocoaPods.xcworkspace'. IntegrazionelibPods.a 'nel bersaglioCocoaPods 'del progetto Xcode./CocoaPods.xcodeproj'.
figura 2

Quando si esegue il installazione pod comando, CocoaPods ci dice che dovremmo usare il CocoaPods.xcworkspace da ora in poi. Gli spazi di lavoro Xcode sono un componente chiave di come funziona CocoaPods. Uno spazio di lavoro Xcode è un contenitore che raggruppa uno o più progetti Xcode, il che rende più facile lavorare con più progetti. Come abbiamo visto prima, CocoaPods crea un nuovo progetto per te, chiamato Pods, e aggiunge automaticamente questo progetto a un nuovo spazio di lavoro Xcode. Il progetto con cui abbiamo iniziato viene anche aggiunto a questo spazio di lavoro. Il vantaggio chiave è che il tuo codice e le dipendenze del progetto sono strettamente separati. Le dipendenze nel progetto Pods sono collegate staticamente con una libreria che puoi vedere nel Costruisci fasi scheda del nostro progetto (figura 3). È importante ricordare di utilizzare l'area di lavoro creata da CocoaPods anziché il progetto con cui abbiamo iniziato. Il nostro progetto è ora pronto per noi e possiamo iniziare a utilizzare le librerie specificate nel Podfile del progetto.

Figura 3

3. Aggiornamento delle dipendenze

È ovvio che CocoaPods semplifica la configurazione rapida di un progetto con diverse dipendenze. Tuttavia, l'aggiornamento delle dipendenze diventa anche più facile. Se una delle dipendenze del progetto ha ricevuto un aggiornamento importante e desideri utilizzare questo aggiornamento nel tuo progetto, tutto ciò che devi fare è aggiornare il Podfile del tuo progetto ed eseguire aggiornamento pod sulla riga di comando. CocoaPods aggiornerà le dipendenze del progetto per te.


4. Riga di comando

La gemma di CocoaPods ha molti altri trucchi nella manica. Anche se puoi utilizzare il sito Web di CocoaPods per sfogliare l'elenco di pod disponibili, la gemma di CocoaPods ti consente anche di elencare (elenco) e cerca (ricerca) le specifiche pod disponibili. Apri una nuova finestra di Terminale e inserisci il comando avanzamento della ricerca pod per cercare librerie che includano la parola progresso. Il vantaggio di cercare i pod usando la riga di comando è che si vedono solo le informazioni che ti interessano, come l'origine del pod e le versioni disponibili.

Corri il baccello comando (senza opzioni) per visualizzare un elenco completo di opzioni disponibili. Il manuale di CocoaPods è eccellente, quindi assicurati di leggerlo in caso di problemi o domande.


Conclusione

Ora dovresti avere una conoscenza di base di CocoaPods in modo che tu possa utilizzare CocoaPods nel tuo sviluppo. Una volta che inizi a utilizzare CocoaPods, è probabile che non potrai vivere senza di esso. Anche se avevo sentito parlare di CocoaPods molte volte, mi ci è voluto del tempo per effettuare la transizione. Tuttavia, una volta iniziato a utilizzare CocoaPods, non ho creato un singolo progetto senza di esso. Sono sicuro che ti piacerà una volta che ci proverai. Non solo ti farà risparmiare tempo, ma renderà la tua vita di programmatore un po 'più semplice.