L’esecuzione di pod install
installerà la versione corrente di RestKit, causando la generazione di un Podfile.lock
che indica l’esatta versione installata (ad esempio RestKit 0.10.3
). Grazie al Podfile.lock
, l’esecuzione di pod install
su questo ipotetico progetto in un momento successivo su una macchina diversa installerà ancora RestKit 0.10.3 anche se è disponibile una versione più recente. CocoaPods onorerà la versione del Pod in Podfile.lock
a meno che la dipendenza non venga aggiornata nel Podfile o venga chiamato pod update
(che causerà la generazione di un nuovo Podfile.lock
). In questo modo CocoaPods evita mal di testa causati da modifiche inaspettate alle dipendenze.
C’è un bel video di Google su come funziona: “CocoaPods and Lockfiles (Route 85)”.
<Cosa succede dietro le quinte?
In Xcode, con riferimenti direttamente dal sorgente ruby, si:
- Crea o aggiorna uno spazio di lavoro.
- Aggiunge il tuo progetto allo spazio di lavoro, se necessario.
- Aggiunge il progetto della libreria statica CocoaPods allo spazio di lavoro, se necessario.
- Aggiunge libPods.a a: target => fasi di costruzione => link con le librerie.
- Aggiunge il file di configurazione Xcode di CocoaPods al progetto della tua app.
- Cambia le configurazioni dei target della tua app per essere basate su quelle di CocoaPods.
- Aggiunge una fase di compilazione per copiare le risorse da qualsiasi pod installato nel bundle della tua app. Cioè una ‘fase di compilazione script’ dopo tutte le altre fasi di compilazione con le seguenti:
- Shell:
/bin/sh
- Script:
${SRCROOT}/Pods/PodsResources.sh
- Shell:
Nota che i passi da 3 in poi sono saltati se la libreria statica CocoaPods è già nel tuo progetto. Questo è in gran parte basato sul lavoro di Jonah Williams sulle librerie statiche.
<Pods e Submodules
CocoaPods e git submodules cercano di risolvere problemi molto simili. Entrambi si sforzano di semplificare il processo di includere codice di terze parti nel vostro progetto. I sottomoduli si collegano ad un commit specifico di quel progetto, mentre un CocoaPod è legato ad una versione per sviluppatori.
<Passare dai sottomoduli a CocoaPods
Prima di decidere di passare completamente a CocoaPods, assicuratevi che le librerie che state usando siano tutte disponibili. È anche una buona idea registrare le versioni delle librerie che state usando attualmente, in modo da poter impostare CocoaPods per usare le stesse. È anche una buona idea farlo in modo incrementale, andando dipendenza per dipendenza invece di una sola grande mossa.