pod install uitvoeren zal de huidige versie van RestKit installeren, waardoor een Podfile.lock gegenereerd wordt die de exacte geïnstalleerde versie aangeeft (vb. RestKit 0.10.3). Dankzij de Podfile.lock, zal het draaien van pod install op dit hypothetische project op een later tijdstip op een andere machine nog steeds RestKit 0.10.3 installeren, zelfs als er een nieuwere versie beschikbaar is. CocoaPods zal de Pod-versie in Podfile.lock eerbiedigen, tenzij de afhankelijkheid wordt bijgewerkt in het Podfile of pod update wordt aangeroepen (waardoor een nieuwe Podfile.lock zal worden gegenereerd). Op deze manier voorkomt CocoaPods hoofdpijn veroorzaakt door onverwachte wijzigingen in afhankelijkheden.

Er is een geweldige video van Google over hoe dit werkt: “CocoaPods en Lockfiles (Route 85)”.

<Wat gebeurt er achter de schermen?

In Xcode, met verwijzingen rechtstreeks uit de ruby bron, het:

  1. Maakt of actualiseert een werkruimte.
  2. Toevoegt uw project aan de werkruimte indien nodig.
  3. Toevoegt de CocoaPods static library project aan de werkruimte indien nodig.
  4. Toevoegt libPods.a naar: targets => build phases => link met libraries.
  5. Voegt het CocoaPods Xcode configuratiebestand toe aan het project van uw app.
  6. Verandert de doelconfiguraties van uw app om gebaseerd te zijn op die van CocoaPods.
  7. Voegt een bouwfase toe om middelen te kopiëren van alle pods die u hebt geïnstalleerd naar uw app-bundel. Dat wil zeggen een ‘Script bouwfase’ na alle andere bouwfasen met het volgende:
    • Shell: /bin/sh
    • Script: ${SRCROOT}/Pods/PodsResources.sh

Merk op dat stappen 3 en verder worden overgeslagen als de CocoaPods statische bibliotheek al in uw project zit. Dit is grotendeels gebaseerd op Jonah Williams’ werk aan Static Libraries.

<Pods en Submodules

CocoaPods en git submodules proberen zeer vergelijkbare problemen op te lossen. Beide streven ernaar om het proces van het opnemen van code van derden in je project te vereenvoudigen. Submodules linken aan een specifieke commit van dat project, terwijl een CocoaPod is gebonden aan een versie-ontwikkelaar release.

<Switching van submodules naar CocoaPods

Voordat u besluit om de volledige overstap naar CocoaPods te maken, zorg ervoor dat de bibliotheken die u momenteel gebruikt allemaal beschikbaar zijn. Het is ook een goed idee om de versies van de bibliotheken die u momenteel gebruikt op te schrijven, zodat u CocoaPods kunt instellen om dezelfde bibliotheken te gebruiken. Het is ook een goed idee om dit incrementeel te doen, gaan afhankelijkheid voor afhankelijkheid in plaats van een grote verhuizing.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.