La maggior parte di noi utilizza le librerie open source su base giornaliera. Con CocoaPods, gestire le dipendenze in un progetto Cocoa è praticamente indolore. In alcune situazioni, tuttavia, un progetto dipende da una libreria o da un framework che è closed source, non disponibile al pubblico. Puoi comunque utilizzare CocoaPods in tali situazioni. CocoaPods funziona alla grande sia per le librerie chiuse che open source.
Per fare in modo che funzioni, è necessario creare un repository di specifiche private. Una volta impostato, non si nota nemmeno la differenza tra le dipendenze pubbliche e private, perché CocoaPods si occupa dei dettagli nitidi per te. In questo tutorial, imparerai come configurare un repository di specifiche private per gestire le librerie private.
Se hai utilizzato CocoaPods solo per la gestione di pod pubblici, potresti non sapere che CocoaPods può gestire repository di specifiche multiple. Se nessun repository delle specifiche è specificato nel progetto Podfile, CocoaPods torna al repository delle specifiche principali.
Se si specifica una dipendenza nei propri progetti Podfile, CocoaPods cerca per impostazione predefinita nel repository delle specifiche principali. Dai uno sguardo ai seguenti due esempi. Entrambi gli esempi generano lo stesso risultato. La differenza è che specifichiamo esplicitamente la fonte del repository delle specifiche nel secondo Podfile.
platform: ios, '8.0' target 'Testing' do pod 'AFNetworking', '2.6.0' pod 'SVProgressHUD', '~> 1.1' fine
piattaforma sorgente 'https://github.com/CocoaPods/Specs.git': ios, '8.0' target 'Testing' pod 'AFNetworking', '2.6.0' pod 'SVProgressHUD', '~> 1.1' fine
Se non hai mai creato o contribuito a un pod, potresti chiederti che cos'è un repository delle specifiche? Un repository di specifiche non è altro che un repository che contiene una raccolta di specifiche di pod, file con a .podspec o .podspec.json estensione.
Come suggerisce il nome, il repository delle specifiche non contiene i file di origine per i pod. Puoi consultare il repository delle specifiche principali di CocoaPods su GitHub. Se CocoaPods è installato sulla tua macchina, tuttavia, una copia del repository delle specifiche principali è già presente sulla tua macchina.
Durante il processo di installazione, CocoaPods clona il repository delle specifiche principali nella cartella principale. Puoi trovarlo su ~ / .Cocoapods / repos / master.
Di solito uso GitHub per l'hosting di repository Git, quindi questa è la piattaforma che utilizzerò per questo tutorial. Non importa dove ospiti il repository delle specifiche, purché sia accessibile a tutti i membri del tuo team.
Puoi creare un account GitHub gratuito da seguire, ma tieni presente che puoi creare archivi pubblici solo con un account gratuito. Se si dispone di una libreria che si desidera open source, si consiglia di pubblicare la specifica del pod sul repository delle specifiche principali, gestita dal team di CocoaPods. Non ottieni nulla creando un repository specifico per le specifiche pubbliche.
La prima cosa che dobbiamo fare è creare un repository privato su GitHub per le specifiche private che aggiungeremo in seguito. Ho chiamato il mio tutspods. GitHub suggerirà di clonare il repository sul tuo computer, ma non è necessario. CocoaPods clonerà il repository delle specifiche per te una volta aggiunto a CocoaPods. Questo è ciò che faremo nel prossimo passo.
Il prossimo passo è comunicare a CocoaPods il repository delle specifiche che abbiamo appena creato. Lo fai eseguendo il seguente comando dalla riga di comando.
pod repo aggiungi tutspods https://github.com/bartjacobs/tutspods.git
Si può notare che il comando è simile all'aggiunta di un remoto a un repository Git. Assicurati di ricordare il nome che hai fornito al repository delle specifiche, tutspods in questo caso. Ne avremo bisogno un po 'più tardi.
Ogni volta che aggiungi un repository delle specifiche, CocoaPods clona il repository sul tuo computer. Puoi verificarlo navigando verso ~ / .Cocoapods / repos. La directory dovrebbe ora contenere due repository di specifiche, il maestro repository di specifiche e il tutspods repository delle specifiche. Oltre a .idiota cartella, il tutspods la directory è vuota poiché non abbiamo ancora aggiunto alcuna specifica.
Non molto tempo fa, Andy Obusek ha scritto un ottimo tutorial sulla creazione del tuo primo pod. Se non hai mai creato un pod, pubblico o privato, ti consiglio di leggere prima l'articolo di Andy. Non ripeterò ciò che Andy ha scritto in questo tutorial.
Ad esempio, ho creato una piccola libreria, TSPTableView, che contiene uno speciale UITableView
sottoclasse. Per creare una specifica pod per la libreria, eseguire il seguente comando nella radice della libreria.
pod crea spec TSPTableView
Eseguendo il comando precedente, CocoaPods crea un file chiamato TSPTableView.podspec. Apri il file in un editor di testo e compila i campi richiesti. Quando hai finito, corri prodotto specifico per pod
per convalidare la specifica del pod. Se la specifica del pod non supera la convalida, non sarà possibile spingere la specifica al repository delle specifiche.
Se la specifica del pod supera la convalida, è il momento di inviarla al repository delle specifiche private che hai creato in precedenza. Lo fai eseguendo il seguente comando dalla riga di comando.
pod repo push tutspods TSPTableView.podspec
È fondamentale utilizzare lo stesso nome precedentemente utilizzato per aggiungere il repository delle specifiche private a CocoaPods. L'ultimo argomento è il percorso della specifica del pod che stai spingendo al repository delle specifiche.
Ora possiamo usare TSPTableView in un nuovo progetto. Creare un progetto in Xcode e aggiungere a Podfile alla radice del progetto eseguendo pod init
dalla riga di comando. Questo è ciò che Podfile potrebbe sembrare quando hai finito.
piattaforma: ios, '8.0' target 'MyAmazingApp' terminano con 'TSPView' pod
Correre installazione pod
dalla riga di comando per installare le dipendenze elencate nel progetto Podfile. Hai avuto anche un problema? Vedo il seguente errore.
installazione pod Aggiornamento dei repository delle specifiche locali Analisi delle dipendenze [!] Impossibile trovare una specifica per "TSPTableView"
L'output ci dice che CocoaPods prima aggiorna i repository delle specifiche locali. Ciò significa che i repository nel ~ / .Cocoapods / repos la directory viene aggiornata, inserendo eventuali modifiche.
CocoaPods fa questo per assicurarsi che abbia l'ultima versione delle specifiche che sono archiviate nei repository. Se diamo un'occhiata al ~ / .Cocoapods / repos / tutspods directory, possiamo vedere che le specifiche del pod per il TSPTableView pod è lì come ci aspettavamo. Perché CocoaPods non può trovare le specifiche del pod TSPTableView?
La soluzione è semplice. Nella parte superiore del Podfile, dobbiamo specificare quali repository di dati CocoaPods cerca per risolvere le dipendenze elencate nel progetto Podfile. Questo è ciò che Podfile dovrebbe sembrare come rimediare al nostro problema.
source 'https://github.com/bartjacobs/tutspods.git' source 'https://github.com/CocoaPods/Specs.git' piattaforma: ios, '8.0' target 'MyAmazingApp' fare pod 'TSPTableView' fine
Correre installazione pod
ancora una volta per installare le dipendenze elencate nel progetto Podfile. Il comando dovrebbe ora terminare correttamente come mostrato di seguito. Attualmente sto usando CocoaPods 0.38.2 quindi l'output potrebbe essere leggermente diverso se stai utilizzando una versione diversa di CocoaPods.
installazione pod Aggiornamento dei repository delle specifiche locali Analisi delle dipendenze Download delle dipendenze Installazione di TSPTableView (0.0.1) Progetto di generazione dei pod Integrazione del progetto client [!] Chiudere tutte le sessioni Xcode correnti e utilizzare "MyAmazingApp.xcworkspace" per questo progetto da ora in poi.
Si noti che l'ordine in cui si elencano i repository delle specifiche in Podfile è importante. Ad esempio, se hai biforcuto un pod pubblico, lo hai modificato e hai creato un pod privato per la forcella con lo stesso nome, avrai una collisione di nomi.
Questo non è un problema per CocoaPods, perché utilizzerà il primo pod che può trovare con il nome specificato. In generale, si dovrebbe mettere il repository delle specifiche private in cima per assicurarsi che CocoaPods effettui la ricerca per primo, ricadendo nel repository delle specifiche pubbliche, se necessario.
CocoaPods è un ottimo strumento che non sarei in grado di lavorare senza. Spero che questo tutorial ti abbia mostrato quanto sia potente CocoaPods e quanto sia facile creare e gestire pod privati con CocoaPods.