Das Ausführen von pod install installiert die aktuelle Version von RestKit, wodurch ein Podfile.lock erzeugt wird, das die genaue installierte Version angibt (z.B. RestKit 0.10.3). Dank der Podfile.lock wird bei der Ausführung von pod install auf diesem hypothetischen Projekt zu einem späteren Zeitpunkt auf einem anderen Rechner immer noch RestKit 0.10.3 installiert, selbst wenn eine neuere Version verfügbar ist. CocoaPods wird die Pod-Version in Podfile.lock beibehalten, es sei denn, die Abhängigkeit wird in der Pod-Datei aktualisiert oder pod update wird aufgerufen (was dazu führt, dass eine neue Podfile.lock erzeugt wird). Auf diese Weise vermeidet CocoaPods Kopfschmerzen, die durch unerwartete Änderungen an Abhängigkeiten verursacht werden.

Es gibt ein großartiges Video von Google darüber, wie dies funktioniert: „CocoaPods and Lockfiles (Route 85)“.

<Was passiert hinter den Kulissen?

In Xcode, mit Referenzen direkt aus dem Ruby-Quellcode, wird:

  1. Ein Arbeitsbereich erstellt oder aktualisiert.
  2. Fügt dem Arbeitsbereich bei Bedarf das eigene Projekt hinzu.
  3. Fügt dem Arbeitsbereich bei Bedarf das Projekt der statischen Bibliothek CocoaPods hinzu.
  4. Fügt libPods.a zu: targets => build phases => link with libraries.
  5. Fügt die CocoaPods Xcode Konfigurationsdatei zum Projekt der App hinzu.
  6. Ändert die Zielkonfigurationen der App so, dass sie auf denen von CocoaPods basieren.
  7. Fügt eine Build-Phase hinzu, um Ressourcen von allen Pods, die Sie installiert haben, in Ihr App-Bundle zu kopieren, d.h. eine „Script-Build-Phase“ nach allen anderen Build-Phasen mit folgendem Inhalt:
    • Shell: /bin/sh
    • Skript: ${SRCROOT}/Pods/PodsResources.sh

Beachten Sie, dass die Schritte ab 3 übersprungen werden, wenn die statische CocoaPods-Bibliothek bereits in Ihrem Projekt vorhanden ist. Dies basiert weitgehend auf Jonah Williams‘ Arbeit über statische Bibliotheken.

<Pods und Submodule

CocoaPods und git submodules versuchen, sehr ähnliche Probleme zu lösen. Beide streben danach, den Prozess der Einbindung von Code von Drittanbietern in Ihr Projekt zu vereinfachen. Submodule sind mit einem bestimmten Commit des Projekts verknüpft, während ein CocoaPod an eine versionierte Entwicklerfreigabe gebunden ist.

<Umstellung von Submodulen auf CocoaPods

Bevor Sie sich für die vollständige Umstellung auf CocoaPods entscheiden, stellen Sie sicher, dass die derzeit verwendeten Bibliotheken alle verfügbar sind. Es ist auch eine gute Idee, die Versionen der Bibliotheken, die Sie derzeit verwenden, zu notieren, damit Sie CocoaPods so einrichten können, dass es die gleichen Bibliotheken verwendet. Es ist auch eine gute Idee, dies schrittweise zu tun, indem Sie eine Abhängigkeit nach der anderen übernehmen, anstatt einen großen Schritt zu machen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.