Ich kann nicht sprechen, ob CocoaPods oder Karthago zu verwenden oder nicht. Beide haben ihre Stärken und Schwächen. Außerdem sollte die Entscheidung unter Berücksichtigung vieler Faktoren getroffen werden, von denen Sie einige möglicherweise nicht kontrollieren können (wie ein Client, der darauf besteht, dass Sie CocoaPods verwenden!) Also überspringe ich diesen Teil.
Wie auch immer, auf Ihre Frage kann ein Pod, das Sie gerade entwickeln, von einem anderen Pod abhängen. Sie haben bereits die richtige s.dependency
Linie. Das ist notwendig.
Ich vermute jedoch, dass der Grund, warum Sie nicht in der Lage waren, den abhängigen Pod zu referenzieren, sein könnte, weil Sie keine Poddatei in Ihrem 'tester/example' Projekt hatten und/oder keine pod install
nach dem Hinzufügen der Abhängigkeit in deiner Podspec.
Der Grund dafür ist die Anforderung Ich vermute, dass, da die Podspec überhaupt nicht von Xcode verarbeitet wird, Sie nicht tatsächlich die Abhängigkeit herunterladen (oder kompilieren).
Wenn Sie die Pod-Installation durchführen (natürlich über die Befehlszeile), erstellt CocoaPods ein Pods-Projekt mit Ihrem Entwicklungs-Pod, den Pods, auf die Sie angewiesen sind (in Podspec) sowie anderen Pods in Ihrem Podfile.
diese Theorie testen, I:
- eine neue Hülse geführt (CocoaPod eigenen 'pod lib erstellen' (https://guides.cocoapods.org/making/using-pod-lib-create.html) mit
- den Arbeitsbereich geöffnet, das CocoaPod für mich erstellt und bearbeitet die Podspec zu. fügen Sie die Abhängigkeit
s.dependency 'RxSwift', '~> 3.0.1'
.
- Added andere pod in meinem Beispiel App Podfile (die Differenz zwischen Podfile Abhängigkeiten und Podspec Abhängigkeiten zu demonstrieren.)
pod install
im Beispiel App folde Performed r.
- Bearbeitet die Klasse meines Pods, etwas Nützliches zu tun und die
import RxSwift
Zeile hinzuzufügen.
- Ich habe meiner Beispiel-App ein Label hinzugefügt ("Hello World" natürlich).
- Gebrauchte PureLayout alle Autolayoutbeschränkungen für das Label zu tun (und zu zeigen, wie das Beispiel Projekt Zugang zu beiden Hülsen hat -. Die Entwicklung pod sowie der referenzierten pod
PureLayout
)
Sie können prüfen, aus der Demo ich auf meinem öffentlichen GitHub erstellt: https://github.com/ericwastaken/CocoaPod-Dependency-Demo
Ehrlich gesagt, habe ich mehrere Hülsen mit den pod lib create
erstellt und es ist in der Tat eine schöne Struktur schaffen, die immer für mich gearbeitet hat. Aus diesem Grund würde ich empfehlen, es immer zu verwenden, um das Skelett deines Pods zu erstellen.
Xcode 8 Kommentar: pod lib create
scheint immer noch ein Swift 1.x Projekt zu erstellen. Direkt nach der Verwendung dieses Tools wird Ihnen beim Öffnen von Xcode angeboten, auf eine neuere Version von Swift zu "konvertieren". Ich würde diese Umwandlung genau dann und dort (das erste Mal) passieren lassen, so dass Sie in Swift 2.x oder 3.x Syntax sein können (Sie wählen).
Danke für die gründliche Antwort. Ich denke jedoch, dass Sie den letzten Teil meiner Frage verpasst haben, wo ich sage, dass ich nicht durch die ExampleApp entwickeln (oder überhaupt eine haben) und meine Tests auf der obersten Ebene im Framework haben möchte selbst. Ich möchte, dass meine ExampleApp (wenn ich überhaupt eine habe) einfach da sein soll, um zu zeigen, wie das Framework genutzt werden kann. Es sollte nichts Wesentliches enthalten, wie Tests. Es sollte in der Lage sein, ohne Sorge entfernt zu werden. – solidcell
Ich ermutige Sie, das von mir erstellte Repo zu klonen. Sie werden feststellen, dass die Beispiel-App für gar nichts benötigt wird und tatsächlich entfernt werden kann. Sie machen die gesamte Entwicklung in den 'Development Pods', wie Sie es nennen. Außerdem kann man tatsächlich Unit-Tests gegen den Pod schreiben. Das Einheitentestziel kann einfach den Pod als Abhängigkeit haben und Sie können TESTABLE verwenden, um private Methoden in den Tests verfügbar zu machen. Fühlen Sie sich frei, es zu klonen und experimentieren Sie mit dem Entfernen des Beispiels. Beachten Sie, dass Sie immer noch eine Poddatei benötigen, aber das könnte für sich alleine sein. – ericWasTaken
Ja, am Ende ist der Hauptgrund, dass Sie noch eine zusätzliche 'Podfile' benötigen, damit sich das Framework selbst aufbauen kann. Was Ihr Repo betrifft, habe ich versucht, es zu bauen, aber ich bekomme eine Menge Xcode-Probleme damit. Dateien nicht gefunden (rot), dann fügt es einen Build-Ordner bei '../ build' hinzu, wenn ich versuche zu bauen. Wenn ich es schließe und wieder öffne, erstellt es ein kopiertes Schema für jedes Schema: "___ 2" für jedes. Es ist aber in Ordnung, da ich bereits zu der gleichen Lösung wie du gekommen bin (die "Podfile"), Projekt Setup Unterschiede beiseite. – solidcell