English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Approfondimento avanzato di CocoaPods su iOS

Prima di tutto, il file Podfile.lock
Come è stato spiegato in precedenza, dopo aver eseguito pod install con CocoaPods, viene generato un file Podfile.lock. Questo file sembra non averci a che fare, ma in realtà non dovrebbe essere trascurato.
- Il file viene utilizzato per salvare le versioni delle librerie di dipendenza già installate, dopo aver installato le tre librerie di dipendenza Pods (SBJson, AFNetworking, Reachability) tramite CocoaPods, il contenuto del file Podfile.lock corrispondente è:

PODS:
 - AFNetworking (2.1.0):
  - AFNetworking/NSURLConnection
  - AFNetworking/NSURLSession
  - AFNetworking/Reachability
  - AFNetworking/Security
  - AFNetworking/Serialization
  - AFNetworking/UIKit
 - AFNetworking/NSURLConnection (2.1.0):
  - AFNetworking/Reachability
  - AFNetworking/Security
  - AFNetworking/Serialization
 - AFNetworking/NSURLSession (2.1.0):
  - AFNetworking/NSURLConnection
 - AFNetworking/Reachability (2.1.0)
 - AFNetworking/Security (2.1.0)
 - AFNetworking/Serialization (2.1.0)
 - AFNetworking/UIKit (2.1.0):
  - AFNetworking/NSURLConnection
 - Reachability (3.0.0)
 - SBJson (4.0.0)
DEPENDENCIES:
 - AFNetworking (~> 2.0)
 - Reachability (~> 3.0.0)
 - SBJson (~> 4.0.0)
SPEC CHECKSUMS:
 AFNetworking: c7d7901a83f631414c7eda1737261f696101a5cd
 Reachability: 500bd76bf6cd8ff2c6fb715fc5f44ef6e4c024f2
 SBJson: f3c686806e8e36ab89e020189ac582ba26ec4220
COCOAPODS: 0.29.0

Il file Podfile.lock è molto utile per lo sviluppo di più persone. Per la scrittura che non specifica la versione della libreria di dipendenza Pods nel Podfile, è come segue:

pod 'SBJson'

Questa frase viene utilizzata per ottenere la versione più recente della libreria di dipendenza Pods SBJson.
Quando qualcuno della squadra esegue il comando pod install, il file Podfile.lock registrerà la versione più recente dei Pods dipendenti. Quando altri membri della squadra scaricano questo progetto che contiene il file Podfile.lock e eseguono nuovamente il comando pod install, la versione dei Pods dipendenti scaricata sarà la stessa della versione iniziale dell'utente. Senza il file Podfile.lock, tutti gli utenti che eseguono il comando pod install otterranno la versione più recente di SBJson, il che potrebbe causare che la versione dei dipendenti utilizzati dalla stessa squadra sia diversa, il che è assolutamente un disastro per la collaborazione di squadra!
In questo caso, se la squadra desidera utilizzare la versione più recente della libreria di dipendenza SBJson, ci sono due soluzioni:
Modificare il Podfile per puntare alla versione più recente della libreria di dipendenza SBJson;
Eseguire il comando pod update;
Data l'importanza del file Podfile.lock per la collaborazione di squadra, dobbiamo aggiungerlo alla gestione delle versioni.

2、File Podfile
Per gli utenti normali, il file Podfile è il punto di contatto più frequente con CocoaPods. CocoaPods è implementato in ruby, quindi la sintassi del file Podfile è quella di ruby. Di seguito, vengono presentati vari aspetti del file Podfile:
1、Posizione del file Podfile
Questo è un problema rimasto dall'articolo precedente. Di solito, raccomandiamo di collocare il file Podfile nella directory radice del progetto, come mostrato nell'immagine seguente:

Di fatto, il file Podfile può essere collocato in qualsiasi directory, ciò che occorre fare è specificare il percorso del progetto nel Podfile. A differenza del passato, il file Podfile è stato aggiunto in posizione iniziale, con il seguente contenuto specifico:

xcodeproj "/Users/wangzz/Desktop/CocoaPodsTest/CocoaPodsTest.xcodeproj"
platform :ios 
pod 'Reachability', '~> 3.0.0' 
pod 'SBJson', '~> 4.0.0' 
platform :ios, '7.0' 
pod 'AFNetworking', '~> 2.0' 

La directory specificata utilizza la parola chiave xcodeproj.
Dopo di che, entrare nella directory del file Podfile e eseguire il comando pod install, come prima, scaricherà queste librerie di dipendenza Pods e i file correlati saranno messi nella directory del Podfile, come illustrato nell'immagine di seguito:

Come prima, è necessario aprire il progetto utilizzando il file workspace generato qui.

2、Podfile e target
Podfile è essenzialmente utilizzato per descrivere i targets del progetto Xcode. Se non si specifica esplicitamente il target corrispondente a Podfile, CocoaPods crea un target implicito chiamato default che corrisponde al primo target del progetto. In altre parole, se non si specifica un target in Podfile, solo il primo target del progetto può utilizzare le librerie di dipendenza Pods descritte in Podfile.
Se si desidera descrivere più target nel Podfile in un unico progetto, a seconda delle esigenze, ci sono diversi modi per realizzarlo. Per illustrare il problema, si crea un'altra target chiamata Seconde nel progetto originale, e ora il progetto contiene le seguenti target:

① Utilizzo di librerie di dipendenza di Pods identiche in più target
Ad esempio, se entrambe le target chiamate CocoaPodsTest e Seconde devono utilizzare le tre librerie di dipendenza Pods Reachability, SBJson e AFNetworking, è possibile utilizzare la parola chiave link_with per realizzarlo, scrivendo Podfile nel modo seguente:

link_with 'CocoaPodsTest', 'Second'
platform :ios 
pod 'Reachability', '~> 3.0.0' 
pod 'SBJson', '~> 4.0.0' 
platform :ios, '7.0' 
pod 'AFNetworking', '~> 2.0' 

Questo metodo realizza che le due target CocoaPodsTest e Seconde condividano le stesse librerie di dipendenza di Pods.
② Ogni target utilizza un set di librerie di dipendenza di Pods completamente diverso
Questa target CocoaPodsTest utilizza tre librerie di dipendenza: Reachability, SBJson e AFNetworking, ma la target Seconde necessita solo della libreria di dipendenza OpenUDID. In questo caso, si può utilizzare la parola chiave target, e il modo di descrivere Podfile è il seguente:

target :'CocoaPodsTest' do
platform :ios 
pod 'Reachability', '~> 3.0.0' 
pod 'SBJson', '~> 4.0.0' 
platform :ios, '7.0' 
pod 'AFNetworking', '~> 2.0'
end
target :'Second' do
pod 'OpenUDID', '~> 1.0.0'
end

Tra cui, do/end come identificatori di inizio e fine.
3、utilizzare Podfile per gestire le versioni delle dipendenze Pods
Quando si introduce una libreria di dipendenza, è necessario indicare esplicitamente o implicitamente la versione della libreria di dipendenza, la scrittura specifica e il significato sono come segue:

pod 'AFNetworking'   //Non specificare esplicitamente la versione della libreria di dipendenza, significa ottenere sempre la versione più recente
pod 'AFNetworking', '2.0'   //Utilizzare solo la versione 2.0
pod 'AFNetworking', '> 2.0'   //Utilizzare la versione maggiore di 2.0
pod 'AFNetworking', '>= 2.0'   //Utilizzare la versione maggiore o uguale a 2.0
pod 'AFNetworking', '< 2.0'   //Utilizzare la versione minore di 2.0
pod 'AFNetworking', '<= 2.0'   //Utilizzare la versione minore o uguale a 2.0
pod 'AFNetworking', '~> 0.1.2'   //Utilizzare la versione maggiore o uguale a 0.1.2 ma minore di 0.2
pod 'AFNetworking', '~> 0.1'   //Utilizzare la versione maggiore o uguale a 0.1 ma minore di 1.0
pod 'AFNetworking', '~>0'   //Una versione superiore a 0, scrivere questa limitazione o non scrivere nulla ha lo stesso effetto, entrambi significano utilizzare la versione più recente

Terzo, comandi comuni di CocoaPods
1、installa pod
Secondo il contenuto specificato nel file Podfile, installare le librerie di dipendenza. Se esiste un file Podfile.lock e il file Podfile non è stato modificato, verrà installata la versione specificata nel file Podfile.lock.
Ogni volta che si aggiorna il file Podfile, è necessario eseguire nuovamente il comando per reinstallare le librerie di dipendenza Pods.
2、aggiorna pod
Se la versione della libreria di dipendenza specificata nel Podfile non è fissata, quando la libreria di dipendenza ha un aggiornamento, sia che ci sia un file Podfile.lock o meno, verrà ottenuta la versione più recente di dipendenza permessa descritta nel file Podfile.
3, pod search
Il formato del comando è:

$ pod search OpenUDID

Di seguito OpenUDID è il parametro.
Non è difficile vedere che questo comando viene utilizzato per cercare le dipendenze Pods disponibili per nome, i risultati dell'esecuzione sono i seguenti:

-> OpenUDID (1.0.0)
  Iniziativa open source per una soluzione UDID universale e persistente per iOS.
  pod 'OpenUDID', '~> 1.0.0'
  - Homepage: http://OpenUDID.org
  - Sorgente:  https://github.com/ylechelle/OpenUDID.git
  - Versioni: 1.0.0 [repository principale]

Ecco una riga disponibile che descrive brevemente la libreria OpenUDID. In realtà, ciò che ci serve veramente è la terza riga di risultati di cui sopra:

pod 'OpenUDID', '~> 1.0.0'

Non è difficile vedere che è necessario aggiungerlo al file Podfile.
Con questo comando, è possibile trovare facilmente e rapidamente le dipendenze Pods necessarie.
4, pod setup
Il formato del comando è:

$ pod setup

Dopo l'esecuzione verranno stampati:

Impostazione del repository principale di CocoaPods
Aggiornamento 7cd4668..f3d3ced
Fast-forward

Seguiranno molte altre informazioni di aggiornamento.
Questo comando viene utilizzato per aggiornare l'albero delle dipendenze Pods salvate sul computer locale. Poiché molte persone creano o aggiornano le dipendenze Pods ogni giorno, l'esecuzione di questo comando può essere abbastanza lenta, quindi si prega di avere pazienza. Dobbiamo eseguire questo comando regolarmente, altrimenti non possiamo trovare nuove dipendenze Pods eseguendo il comando pod search.

Quattro, documentazione di riferimento

http://guides.cocoapods.org/using/index.html

Ti potrebbe interessare