Ich verstehe, dass der folgende Befehl einen einzelnen Pod aktualisiert : pod update <podname>
. Dadurch werden jedoch auch die Abhängigkeiten anderer Pods (Pods, die nicht im Update-Befehl enthalten waren) aktualisiert, die Sie zuvor installiert haben. Gibt es eine Möglichkeit, einen einzelnen Pod zu aktualisieren und alle anderen Abhängigkeiten in Ruhe zu lassen?
201
podfile.lock
ist. Siehe den Link und das Video, auf das verwiesen wird.Antworten:
Stellen Sie sicher, dass Sie die neueste Version von CocoaPods installiert haben.
$ pod update POD
wurde vor kurzem eingeführt.Weitere Informationen finden Sie in diesem Problem-Thread :
quelle
$ pod update SomePodName
. In einigen Fällen versucht CocoaPods jedoch auch, die Abhängigkeiten anderer Pods zu aktualisieren. Kurz gesagt, SomePodName ist nicht der einzige Pod, der in einigen Fällen aktualisiert wird.pod install
, wird die ursprüngliche Version wiederhergestellt. Aber ich möchte meine Änderungen nicht verlierenpod update
berührt alles. Es macht nicht das, was es verspricht, und es ist sehr frustrierend. Entfernt zufällig Header aus anderen Pods, von denen Sie nicht gesagt haben, dass sie sie berühren sollen usw.So installieren Sie einen einzelnen Pod, ohne vorhandene zu aktualisieren-> Fügen Sie diesen Pod zu Ihrer Poddatei hinzu und verwenden Sie:
So entfernen / aktualisieren Sie einen bestimmten Pod:
Geprüft!
quelle
Es ist 2015
Da
pod update SomePod
in den neuesten Versionen von Cocoapods alles berührt wird, habe ich eine Problemumgehung gefunden.Befolgen Sie die nächsten Schritte:
SomePod
Aus dem entfernenPodfile
Lauf
pod install
Pods werden nun
SomePod
aus unserem Projekt und aus derPodfile.lock
Datei entfernt.Setzen Sie zurück
SomePod
in diePodfile
Führen Sie
pod install
erneut ausDieses Mal wird die neueste Version unseres Pods installiert und im gespeichert
Podfile.lock
.quelle
pod update somepod anotherpod thirdpod
mehrere Pods gleichzeitig aktualisieren :)SomePod
eine aktualisierte Abhängigkeit vonanotherPod
den neuesten Abhängigkeiten nicht eine gemeinsame Abhängigkeit von den neuesten aktualisiert . Wird das nicht passieren, unabhängig davon, was sich im Podlock befindet? Andernfalls kann es die Anforderungen vonSomePod
nur sagen:
pod install
- zum Installieren neuer Pods,pod update
- zum Aktualisieren vorhandener Pods,pod update podName
- zum Aktualisieren nur bestimmter Pods, ohne andere Pods zu berühren,pod update podName versionNum
- zum Aktualisieren / DOWNGRADEN eines bestimmten Pods, ohne andere Pods zu berührenquelle
pod
stattgit
?Nur eine kleine Notiz.
funktioniert nur, wenn dieser Pod bereits installiert wurde. Andernfalls müssen Sie alle mit aktualisieren
Befehl
quelle
pod install
zuerst verwenden, wodurch nur die fehlenden installiert werden, ohne die anderen zu berühren. Obwohl es keinen Anwendungsfall gibt, einen Pod zu aktualisieren, den Sie nicht installiert haben, gibt es einen?tl; dr verwenden:
Warum? Lesen Sie unten.
pod update
wird das NICHT respektierenpodfile.lock
. Es wird es überschreiben.pod install
wird die respektierenpodfile.lock
Dieses Diagramm hilft, die Unterschiede besser zu verstehen:
Das Hauptproblem kommt vom
~>
alias optimistischen Operator .Es
Podfile
reicht nicht aus, genaue Versionen in der zu verwendenEinige denken möglicherweise, dass die Angabe genauer Versionen ihrer Pods in ihrem
Podfile
Beispielpod 'A', '1.0.0'
ausreicht, um sicherzustellen, dass jeder Benutzer dieselbe Version wie andere Personen im Team hat.Dann könnten sie sogar verwenden
pod update
, selbst wenn sie nur einen neuen Pod hinzufügen, und denken, dass es niemals riskieren würde, andere Pods zu aktualisieren, da sie auf eine bestimmte Version in der festgelegt sindPodfile
.Tatsächlich reicht dies jedoch nicht aus, um sicherzustellen, dass Benutzer1 und Benutzer2 in unserem obigen Szenario immer genau die gleiche Version aller ihrer Pods erhalten.
Ein typisches Beispiel ist, wenn der Pod
A
eine Abhängigkeit vom Pod hatA2
- deklariertA.podspec
alsdependency 'A2', '~> 3.0'
. In diesem Fall'A', '1.0.0'
zwingt die Verwendung von pod in Ihrer Poddatei tatsächlich Benutzer1 und Benutzer2, beide immer Version 1.0.0 von Pod A zu verwenden, aber:A2
in der Version3.4
(da dies zu diesem ZeitpunktA2
die neueste Version war).pod install
wenn er später dem Projekt beitritt , wird möglicherweise ein PodA2
in der Version angezeigt3.5
(da der Betreuer vonA2
möglicherweise in der Zwischenzeit eine neue Version veröffentlicht hat). Deshalb ist die einzige Möglichkeit , jedes Teammitglied der Arbeit mit den gleichen Versionen aller pod , um sicherzustellen , auf dem Computer jedes ist zu verwendenPodfile.lock
und richtig verwendenpod install
vs.pod update
.Der obige Auszug wurde alle von Pod-Installation vs. Pod-Update abgeleitet
Ich empfehle auch sehr zu beobachten, was ein
podfile.lock
machtquelle
Ich benutze
cocoapods version 1.0.1
und benutzepod update name-of-pod
funktioniert perfekt. Es werden keine anderen Pods aktualisiert, nur die von Ihnen eingegebenen.quelle
Dies ist ein Ausreißer und wahrscheinlich nicht das, womit sich das OP befasst hat,
pod update <podname>
funktioniert jedoch nicht in allen Fällen, wenn Sie einen lokalen Pod auf Ihrem Computer verwenden.In dieser Situation wird nur ausgelöst
pod update
, wenn sich die Podspec-Datei ändert. Wenn Sie jedoch Änderungen vornehmen, können Sie auchpod install
arbeiten.In dieser Situation können Sie nur geringfügige Änderungen wie die Beschreibung oder Zusammenfassung um einen Buchstaben ändern und anschließend den Befehl install oder update erfolgreich ausführen.
quelle