- De definitieve gids voor het installeren en updaten van pods
- U zet CocoaPods voor de eerste keer op in een project en hebt uw Podfile
- U heeft een nieuwe pod aan uw Podfile toegevoegd
- U wilt de nieuwste versie van alle pods in uw Podfile
- U wilt de laatste versie van slechts één pod in uw Podfile
- U werkt met een ontwikkel pod en wilt uw laatste wijzigingen
- U hebt de broncode gedownload voor een bestaand project dat CocoaPods gebruikt
- U schrijft een script om een project te bouwen op een build server
- Xcode rapporteert vreemde bouwfouten met betrekking tot pods
- Deel 2: Hoe het werkt
- pod update
- pod install
- Samenvatting
De definitieve gids voor het installeren en updaten van pods
Het verschil tussen pod install
en pod update
is subtiel, en het is niet altijd duidelijk welke u moet gebruiken. Maar een goed begrip van wat deze commando’s doen geeft je veel fijnere controle over hoe afhankelijkheden worden beheerd in je project, dus het is de moeite waard om het verschil te kennen.
In het eerste deel van dit artikel geef ik je een lijst met recepten die laten zien of je pod install
of pod update
moet uitvoeren in een aantal veel voorkomende situaties. Dan in het tweede deel zal ik uitleggen waarom de verschillende commando’s verschillende dingen doen, en hoe CocoaPods het Podfile.lock
bestand gebruikt om het allemaal te laten gebeuren.
Om deze recepten te laten werken, zorg ervoor dat Podfile
en Podfile.lock
gecommit zijn aan source control.
U zet CocoaPods voor de eerste keer op in een project en hebt uw Podfile
pod install
Dit installeert de laatste versie* van elk van de pods die u in uw nieuwe Podfile hebt opgegeven. Er wordt ook een MyProject.xcworkspace
bestand aangemaakt als er nog geen bestond.
U heeft een nieuwe pod aan uw Podfile toegevoegd
pod install
Dit installeert de laatste versie* van alle nieuwe pods die aan uw Podfile zijn toegevoegd, waarbij uw andere pods ongewijzigd blijven.
Als u pod update
in plaats daarvan zou uitvoeren, zou het de nieuwe pods installeren en elk van uw bestaande pods bijwerken naar de nieuwste versie*.
U wilt de nieuwste versie van alle pods in uw Podfile
pod update
Dit zal al uw pods doorlopen en ervoor zorgen dat de nieuwste versie* van elk is geïnstalleerd in uw project.
U wilt de laatste versie van slechts één pod in uw Podfile
pod update SomePod
Dit zorgt ervoor dat de laatste versie* van de pod die u opgeeft wordt geïnstalleerd, terwijl uw andere pods ongewijzigd blijven.
U werkt met een ontwikkel pod en wilt uw laatste wijzigingen
pod update MyDevelopmentPod
Dit zorgt ervoor dat de laatste versie van uw pod wordt geïnstalleerd, terwijl uw andere pods ongewijzigd blijven.
U hebt de broncode gedownload voor een bestaand project dat CocoaPods gebruikt
pod install
Dit zal alle pods in het Podfile installeren op de exacte versies die eerder zijn geïnstalleerd in dit deel van de broncode.
Als u pod update
in plaats daarvan zou uitvoeren, zou het de laatste versie* van elk van de pods in het Podfile installeren. Dit zou kunnen voorkomen dat het project wordt gebouwd als de laatste versies niet compatibel zijn met andere code in het project. Ik zou aanraden om pod install
uit te voeren om de code te laten bouwen, en dan pods bij te werken indien nodig op een gecontroleerde manier.
U schrijft een script om een project te bouwen op een build server
pod install
Dit installeert alle pods in het Podfile op exact dezelfde versies die werden geïnstalleerd in de versie die wordt gebouwd. Dit is belangrijk voor een stabiele build, omdat dit de versies zijn waarmee de code is ontwikkeld, en het betekent dat elke build van dat deel van de code dezelfde pod-versies zal gebruiken. Als u pod update
in plaats daarvan zou gebruiken, zou uw build mogelijk verschillende versies van pods kunnen gebruiken elke keer dat het bouwt.
Xcode rapporteert vreemde bouwfouten met betrekking tot pods
Dit gebeurt soms na het bijwerken van pods, of na het schakelen tussen takken van een project die dezelfde pods bevatten met verschillende versies.
Verwijder de /Pods
directory, en voer dan
Dit zal alle pods in het Podfile opnieuw installeren op exact dezelfde versies die eerder waren geïnstalleerd, en is meestal voldoende om problemen met Xcode op te lossen.
Soms wordt voorgesteld om de /Pods
directory en hetPodfile.lock
bestand te verwijderen, en dan pod install
uit te voeren. Dit lost eventuele problemen met Xcode op, maar zal ook elk van de pods in het Podfile upgraden naar de laatste versie*.
Deel 2: Hoe het werkt
Het verschil tussen pod install
en pod update
ligt in hoe ze interageren met het Podfile.lock
bestand. Dit bestand wordt gebruikt om de exacte versie van elke pod op te slaan die momenteel in uw project is geïnstalleerd.
De eenvoudigste manier om te begrijpen hoe het werkt is te kijken naar het volgende diagram (disclaimer: dit is een eenvoudig schema in plaats van een nauwkeurig technisch diagram).
pod update
pod update
negeert Podfile.lock
bij het controleren op versies. Het zoekt naar de laatst beschikbare versie* van een pod, en installeert het als het nog niet geïnstalleerd is.
pod install
pod install
kijkt eerst in Podfile.lock
wanneer het controleert op versies. Als een versie van de pod wordt genoemd in Podfile.lock
, zal het precies die versie installeren. Als die pod niet is opgenomen in Podfile.lock
(of als Podfile.lock
nog niet bestaat), zal het zich gedragen als voor pod update
, dat wil zeggen het vindt de nieuwste beschikbare versie * en installeert het.
In beide gevallen, CocoaPods dan werkt Podfile.lock
met alle nieuwe versienummers die werden geïnstalleerd.
Dit is wat stelt u in staat om pod versies consistent te gebruiken over verschillende installaties van een project (i.d. bij installatie vanuit een repository, over meerdere teamleden, of op een build server), en is de reden waarom Podfile.lock
moet worden gecommit aan bronbeheer.
Samenvatting
In dit artikel heb ik recepten gegeven die laten zien of pod install
of pod update
in een aantal veel voorkomende situaties moet worden uitgevoerd. Daarna heb ik beschreven hoe en waarom de twee commando’s op verschillende manieren werken. Als je het nuttig vond, geef het dan een applaus en/of deel het, en volg me voor andere nuttige artikelen.