Private Pods mit CocoaPods verwalten

Die meisten von uns verwenden täglich Open-Source-Bibliotheken. Mit CocoaPods ist das Verwalten von Abhängigkeiten in einem Cocoa-Projekt praktisch schmerzlos. In einigen Situationen ist ein Projekt jedoch von einer Bibliothek oder einem Framework abhängig, das Closed Source ist und nicht öffentlich verfügbar ist. Sie können CocoaPods in solchen Situationen trotzdem verwenden. CocoaPods eignet sich hervorragend für geschlossene und Open Source-Bibliotheken.

Damit dies funktioniert, müssen Sie ein privates Specs-Repository erstellen. Wenn Sie sich erst einmal eingerichtet haben, bemerken Sie nicht einmal den Unterschied zwischen öffentlichen und privaten Abhängigkeiten, da CocoaPods sich um die wichtigsten Details kümmert. In diesem Lernprogramm erfahren Sie, wie Sie ein privates Specs-Repository einrichten, um private Bibliotheken zu verwalten.

1. Einleitung

Wenn Sie nur CocoaPods zum Verwalten von öffentlichen Pods verwendet haben, wissen Sie möglicherweise nicht, dass CocoaPods mit mehreren Specs-Repositories umgehen kann. Wenn im Projekt kein Spezifikationsrepository angegeben ist Poddatei, CocoaPods greift auf das Master-Specs-Repository zurück.

Wenn Sie in Ihrem Projekt eine Abhängigkeit angeben Poddatei, CocoaPods sucht standardmäßig im Master-Specs-Repository. Sehen Sie sich die folgenden zwei Beispiele an. Beide Beispiele erzeugen das gleiche Ergebnis. Der Unterschied ist, dass wir die Quelle des Specs-Repository im zweiten explizit angeben Poddatei.

Plattform: ios, '8.0' Ziel 'Testing' do pod 'AFNetworking', '2.6.0' Pod 'SVProgressHUD', '~> 1.1' Ende
Quelle 'https://github.com/CocoaPods/Specs.git' Plattform: ios, '8.0' Ziel 'Testing' do Pod 'AFNetworking', '2.6.0' Pod 'SVProgressHUD', '~> 1.1' Ende

Wenn Sie noch nie einen Pod erstellt oder dazu beigetragen haben, fragen Sie sich vielleicht, was ein Specs-Repository ist. Ein Specs-Repository ist nichts anderes als ein Repository, das eine Sammlung von Pod-Spezifikationen enthält, Dateien mit einem .podspec oder .podspec.json Erweiterung.

Wie der Name vermuten lässt, enthält das Specs-Repository nicht die Quelldateien für die Pods. Sie können das CocoaPods Master Specs-Repository auf GitHub durchsuchen. Wenn CocoaPods auf Ihrem Computer installiert ist, ist bereits eine Kopie des Master-Specs-Repository auf Ihrem Computer vorhanden.

Während des Installationsvorgangs klont CocoaPods das Master-Specs-Repository in Ihren Home-Ordner. Sie finden es bei ~ / .cocoapods / repos / master.

2. Erstellen eines Specs Repository

Normalerweise verwende ich GitHub für das Hosting von Git-Repositories. Dies ist also die Plattform, die ich für dieses Tutorial verwenden werde. Es spielt keine Rolle, wo Sie das Specs-Repository hosten, solange es für alle in Ihrem Team verfügbar ist.

Sie können ein kostenloses GitHub-Konto erstellen, das Sie mitverfolgen können. Beachten Sie jedoch, dass Sie öffentliche Repositorys nur mit einem kostenlosen Konto erstellen können. Wenn Sie über eine Bibliothek verfügen, die Sie öffnen möchten, sollten Sie die Pod-Spezifikation im Master-Specs-Repository veröffentlichen, das vom CocoaPods-Team verwaltet wird. Sie erhalten nichts, wenn Sie ein separates Repository für öffentliche Daten erstellen.

Als Erstes müssen wir auf GitHub ein privates Repository für die privaten Spezifikationen erstellen, die wir später hinzufügen werden. Ich habe meine benannt Tutspods. GitHub schlägt vor, das Repository auf Ihrem Computer zu klonen. Dies ist jedoch nicht erforderlich. CocoaPods wird das Specs-Repository für Sie klonen, sobald Sie es zu CocoaPods hinzugefügt haben. Das machen wir im nächsten Schritt.

3. Hinzufügen des Repository zu CocoaPods

Der nächste Schritt besteht darin, CocoaPods über das gerade erstellte Specs-Repository zu informieren. Dazu führen Sie den folgenden Befehl in der Befehlszeile aus.

pod repo add tutspods https://github.com/bartjacobs/tutspods.git

Möglicherweise stellen Sie fest, dass der Befehl dem Hinzufügen einer Remote zu einem Git-Repository ähnelt. Stellen Sie sicher, dass Sie sich an den Namen erinnern, den Sie dem Specs-Repository geben, Tutspods in diesem Fall. Wir werden es später brauchen.

Wenn Sie ein Specs-Repository hinzufügen, klont CocoaPods das Repository auf Ihrem Computer. Sie können dies überprüfen, indem Sie zu navigieren ~ / .cocoapods / repos. Das Verzeichnis sollte jetzt zwei Specs-Repositorys enthalten, das Meister Specs Repository und die Tutspods Specs Repository. Abgesehen von einem .git Ordner, der Tutspods Das Verzeichnis ist leer, da wir noch keine Angaben hinzugefügt haben.

4. Erstellen eines privaten Pods

Vor nicht allzu langer Zeit hat Andy Obusek ein großartiges Tutorial über das Erstellen Ihrer ersten Schote geschrieben. Wenn Sie noch nie einen öffentlichen oder privaten Pod erstellt haben, empfiehlt es sich, zuerst den Artikel von Andy zu lesen. Ich werde nicht wiederholen, was Andy in diesem Tutorial geschrieben hat.

Als Beispiel habe ich eine kleine Bibliothek erstellt, TSPTableView, was enthält ein besonderes UITableView Unterklasse. Um eine Pod-Spezifikation für die Bibliothek zu erstellen, führen Sie den folgenden Befehl im Stammverzeichnis der Bibliothek aus.

pod create spec TSPTableView

Durch Ausführen des obigen Befehls erstellt CocoaPods eine Datei mit dem Namen TSPTableView.podspec. Öffnen Sie die Datei in einem Texteditor und füllen Sie die erforderlichen Felder aus. Wenn du fertig bist, renne Pod Spec Flusen um die pod spec zu bestätigen. Wenn die Pod-Spezifikation die Validierung nicht besteht, können Sie die Spezifikation nicht in das Specs-Repository verschieben.

5. Push der Spec in das Specs Repository

Wenn die Pod-Spezifikation die Validierung besteht, ist es an der Zeit, sie in das private Specs-Repository zu verschieben, das Sie zuvor erstellt haben. Dazu führen Sie den folgenden Befehl in der Befehlszeile aus.

pod repo push tutspods TSPTableView.podspec

Es ist wichtig, dass Sie denselben Namen verwenden, den Sie zuvor verwendet haben, um das Private Specs-Repository zu CocoaPods hinzuzufügen. Das letzte Argument ist der Pfad zu der Pod-Spezifikation, die Sie in das Specs-Repository verschieben.

6. Verwendung des privaten Pods

Wir können jetzt verwenden TSPTableView in einem neuen Projekt. Erstellen Sie ein Projekt in Xcode und fügen Sie ein Poddatei an der Wurzel des Projekts durch Ausführen pod init von der Kommandozeile aus. Das ist was der Poddatei könnte aussehen, wenn du fertig bist.

Plattform: ios, '8.0' Ziel 'MyAmazingApp' Do Pod 'TSPView' Ende

Lauf pod installieren von der Befehlszeile aus, um die im Projekt aufgeführten Abhängigkeiten zu installieren Poddatei. Bist du auch auf ein Problem gestoßen? Ich sehe den folgenden Fehler.

pod install Aktualisieren lokaler Specs-Repositorys Analysieren von Abhängigkeiten [!] Spezifikation für 'TSPTableView' kann nicht gefunden werden

Die Ausgabe sagt uns, dass CocoaPods zuerst die lokalen Specs-Repositories aktualisiert. Dies bedeutet, dass die Repositories in der ~ / .cocoapods / repos Verzeichnis werden aktualisiert und alle Änderungen werden übernommen.

CocoaPods führt dies aus, um sicherzustellen, dass die neueste Version der Spezifikationen in den Repositorys gespeichert ist. Schauen wir uns das an ~ / .cocoapods / repos / tutspods Verzeichnis, können wir sehen, dass die Pod-Spezifikation für die TSPTableView Pod ist da, wie wir erwartet hatten. Warum können CocoaPods die Pod-Spezifikationen nicht finden? TSPTableView?

Die Lösung ist einfach. An der Spitze der Poddatei, Wir müssen angeben, welche Spezifikations-Repositories CocoaPods sucht, um die im Projekt aufgelisteten Abhängigkeiten aufzulösen Poddatei. Das ist was der Poddatei sollte aussehen, um unser Problem zu beheben.

source 'https://github.com/bartjacobs/tutspods.git' source 'https://github.com/CocoaPods/Specs.git' plattform: ios, '8.0' Ziel 'MyAmazingApp', Pod 'TSPTableView' ende

Lauf pod installieren ein weiteres Mal, um die im Projekt aufgeführten Abhängigkeiten zu installieren Poddatei. Der Befehl sollte nun wie unten gezeigt erfolgreich abgeschlossen werden. Ich verwende derzeit CocoaPods 0,38,2 Wenn Sie eine andere Version von CocoaPods verwenden, kann die Ausgabe etwas abweichen.

pod install Aktualisieren lokaler Specs-Repositories Abhängigkeiten analysieren Abhängigkeiten herunterladen TSPTableView installieren (0.0.1) Pod-Projekt generieren Client-Projekt integrieren [!] Bitte schließen Sie alle aktuellen Xcode-Sitzungen und verwenden Sie ab jetzt 'MyAmazingApp.xcworkspace' für dieses Projekt.

Beachten Sie die Reihenfolge, in der Sie die Specs-Repositories in der Liste auflisten Poddatei ist wichtig. Wenn Sie beispielsweise einen öffentlichen Pod gegabelt, geändert und einen privaten Pod für die Gabel mit demselben Namen erstellt haben, kommt es zu einer Namenskollision.

Dies ist für CocoaPods kein Problem, da es den ersten Pod verwendet, den es mit dem angegebenen Namen finden kann. Im Allgemeinen sollten Sie das private Specs-Repository an die Spitze setzen, um sicherzustellen, dass CocoaPods dieses zuerst durchsucht und gegebenenfalls auf das öffentliche Specs-Repository zurückgreift.

Fazit

CocoaPods ist ein großartiges Werkzeug, ohne das ich nicht arbeiten könnte. Ich hoffe, dieses Tutorial hat Ihnen gezeigt, wie leistungsfähig CocoaPods ist und wie einfach es ist, private Pods mit CocoaPods zu erstellen und zu verwalten.