Der definitive Leitfaden zur Installation und Aktualisierung von Pods

Gabrielle Earnshaw

Follow

Oct 9, 2018 – 5 min read

Der Unterschied zwischen pod install und pod update ist subtil, und es ist nicht immer klar, welchen man verwenden sollte. Aber wenn man versteht, was diese Befehle tun, hat man eine viel bessere Kontrolle darüber, wie die Abhängigkeiten im Projekt verwaltet werden. Es lohnt sich also, den Unterschied zu kennen.

Im ersten Teil dieses Artikels werde ich Ihnen eine Liste von Rezepten geben, die zeigen, ob Sie pod install oder pod update in einigen häufigen Situationen verwenden sollten. Im zweiten Teil erkläre ich dann, warum die verschiedenen Befehle unterschiedliche Dinge tun und wie CocoaPods die Datei Podfile.lock verwendet, um alles zu ermöglichen.

Damit diese Rezepte funktionieren, muss sichergestellt werden, dass Podfile und Podfile.lock in die Versionskontrolle eingebunden sind.

Sie richten CocoaPods zum ersten Mal in einem Projekt ein und haben Ihr Podfile

pod install

Dies installiert die neueste Version* jedes der Pods, die Sie in Ihrem neuen Podfile angegeben haben. Es wird auch eine MyProject.xcworkspace-Datei erstellt, falls noch keine vorhanden war.

Sie haben einen neuen Pod zu Ihrer Poddatei hinzugefügt

pod install

Dies installiert die neueste Version* aller neuen Pods, die Ihrer Poddatei hinzugefügt wurden, wobei Ihre anderen Pods unverändert bleiben.

Wenn Sie stattdessen pod update ausführen, werden die neuen Pods installiert und alle vorhandenen Pods auf die neueste Version* aktualisiert.

Sie möchten die neueste Version aller Pods in Ihrem Podfile erhalten

pod update

Dies geht alle Ihre Pods durch und stellt sicher, dass die neueste Version* von jedem in Ihrem Projekt installiert ist.

Sie möchten die neueste Version nur eines Pods in Ihrem Podfile erhalten

pod update SomePod

Dies stellt sicher, dass die neueste Version* des Pods, den Sie angeben, installiert wird, während Ihre anderen Pods unverändert bleiben.

Sie arbeiten mit einem Entwicklungs-Pod und möchten die neuesten Änderungen erhalten

pod update MyDevelopmentPod

Dies stellt sicher, dass die neueste Version Ihres Pods installiert wird, während die anderen Pods unverändert bleiben.

Sie haben den Quellcode für ein bestehendes Projekt heruntergeladen, das CocoaPods verwendet

pod install

Dies installiert alle Pods in der Poddatei mit genau den Versionen, die zuvor in diesem Ausschnitt des Quellcodes installiert wurden.

Wenn Sie stattdessen pod update ausführen würden, würde es die neueste Version* jedes Pods in der Poddatei installieren. Dies könnte verhindern, dass das Projekt gebaut wird, wenn die neuesten Versionen nicht mit anderem Code im Projekt kompatibel sind. Ich würde empfehlen, pod install auszuführen, um den Code zu bauen und dann die Pods nach Bedarf auf kontrollierte Weise zu aktualisieren.

Du schreibst ein Skript, um ein Projekt auf einem Build-Server zu bauen

pod install

Dies installiert alle Pods im Podfile mit genau den Versionen, die in der zu bauenden Version installiert wurden. Dies ist wichtig für einen stabilen Build, da dies die Versionen sind, gegen die der Code entwickelt wurde, und es bedeutet, dass jeder Build dieses Codeteils dieselben Pod-Versionen verwenden wird. Wenn Sie stattdessen pod update verwenden würden, könnte Ihr Build möglicherweise bei jedem Build unterschiedliche Pod-Versionen verwenden.

Xcode meldet seltsame Build-Fehler im Zusammenhang mit Pods

Dies passiert gelegentlich nach dem Aktualisieren von Pods oder nach dem Wechsel zwischen Zweigen eines Projekts, die dieselben Pods in unterschiedlichen Versionen enthalten.

Löschen Sie das Verzeichnis /Pods und führen Sie dann pod install

Dies installiert alle Pods in der Poddatei mit genau den Versionen neu, die zuvor installiert waren, und reicht in der Regel aus, um alle Probleme zu beheben, mit denen Xcode konfrontiert werden kann.

Manchmal wird empfohlen, das Verzeichnis /Pods und die Datei Podfile.lock zu löschen und dann pod install auszuführen. Dies löst alle Probleme mit Xcode, aktualisiert aber auch alle Pods in der Poddatei auf die neueste Version*.

Teil 2: Wie es funktioniert

Der Unterschied zwischen pod install und pod update liegt darin, wie sie mit der Datei Podfile.lock zusammenarbeiten. Diese Datei wird verwendet, um die genaue Version jedes Pods zu speichern, der derzeit in Ihrem Projekt installiert ist.

Am einfachsten lässt sich die Funktionsweise anhand des folgenden Diagramms nachvollziehen (Haftungsausschluss: Es handelt sich um ein einfaches Schema und nicht um eine genaue technische Darstellung).

Pod-Installation vs. Pod-Update

Pod-Update

pod update ignoriert Podfile.lock, wenn es nach Versionen sucht. Es sucht nach der neuesten verfügbaren Version* eines Pods und installiert sie, wenn sie noch nicht installiert ist.

pod install

pod install sucht bei der Versionsprüfung zuerst in Podfile.lock. Wenn eine Version des Pods in Podfile.lock aufgeführt ist, wird genau diese Version installiert. Wenn der Pod nicht in Podfile.lock aufgeführt ist (oder wenn Podfile.lock noch nicht existiert), verhält es sich wie bei pod update, d.h. es findet die neueste verfügbare Version* und installiert sie.

In beiden Fällen aktualisiert CocoaPods dann Podfile.lock mit allen neuen Versionsnummern, die installiert wurden.

Dies ermöglicht es Ihnen, Pod-Versionen konsistent über verschiedene Installationen eines Projekts hinweg zu verwenden (d.h..d.h. bei der Installation aus einem Repository, bei mehreren Teammitgliedern oder auf einem Build-Server), und das ist der Grund, warum Podfile.lock in die Versionskontrolle übertragen werden sollte.

Zusammenfassung

In diesem Artikel habe ich Rezepte gegeben, die zeigen, ob pod install oder pod update in einer Reihe von häufigen Situationen ausgeführt werden soll. Dann habe ich beschrieben, wie und warum die beiden Befehle auf unterschiedliche Weise funktionieren. Wenn Sie ihn nützlich fanden, klatschen Sie bitte und / oder teilen Sie ihn, und folgen Sie mir für weitere nützliche Artikel.

admin

Schreibe einen Kommentar

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

lg