Wie erstelle ich einen CocoaPod mit verschachtelten Git-Submodulen?

Lesezeit: 2 Minuten

Benutzer-Avatar
Rob C

Ich versuche, einen CocoaPod mit verschachtelten Git-Submodulen zu erstellen. Ich kann den Pod erstellen, aber ich kann nicht völlig es installieren.

Wenn ich laufe pod install --verbose Ich kann sehen, dass git submodule update --init wird stattdessen ausgeführt git submodule update --init --recursive die das verschachtelte Submodul nicht zieht.

Unterstützt CocoaPods verschachtelte Submodule oder nicht? Ich habe das Internet nach potenziellen Hinweisen durchsucht, kann aber nichts finden!

Ich sollte auch erwähnen, dass ich die Fussel mit durchziehe pod lib lint aber nicht pod spec lint. pod spec lint beschwert sich, dass es die Header-Datei im verschachtelten Submodul nicht finden kann. Ich bin mir nicht sicher, ob dies mit dem oben genannten Problem zusammenhängt.

(Beachten Sie auch, dass dieser spezielle Pod, an dem ich arbeite, nur ein Proof of Concept ist. Ich werde einen viel komplexeren Pod erstellen, der von socket.IO-objc abhängt. Leider ist socket.IO-objc nicht als Pod verfügbar , und hängt von SocketRocket als Submodul ab.)

Hier ist meine PodSpec:

Pod::Spec.new do |s|
  s.name             = "DebugTools"
  s.version          = "0.1.0"
  s.summary          = "Awesome tools for debugging iOS apps."
  s.homepage         = "https://github.com/robertcrabtree/DebugTools"
  s.license="MIT"
  s.author           = { "Robert Crabtree" => "[email protected]" }
  s.source           = { :git => "https://github.com/robertcrabtree/DebugTools.git", :tag => s.version.to_s, :submodules => true }

  s.platform     = :ios, '7.0'
  s.requires_arc = true

  s.source_files="Pod/Classes/**/*", 'Pod/Submodules/LogMaster/LogMaster/*.{h,m}', 'Pod/Submodules/LogMaster/LogMaster/LogCore/*.h'
  s.resource_bundles = {
    'DebugTools' => ['Pod/Assets/*.png']
  }
end

Hier ist mein Podfile:

pod "DebugTools", :git => "https://github.com/robertcrabtree/DebugTools.git", :submodules => true

Ich glaube, dass CocoaPods genau erstellt wird um die Verwendung von GIT-Submodulen zu vermeiden.

Hier ist eine coole Erklärung warum: https://roadfiresoftware.com/2013/05/a-case-for-switching-to-cocoapods-from-git-submodules/

Angenommen, Ihr Projekt hängt von AFNetworking ab. Sie fügen es als Git-Submodul hinzu, und dann, eines Tages, aufgrund höherer Gewalt (oder einfach, weil der Autor Lust dazu hat), verschwindet AFNetworking von seinem Zuhause auf GitHub. Es ist alles weg, hat sich in Luft aufgelöst. Wenn jetzt jemand Ihr Projekt-Repository klont, führt er git submodule update –init aus … und es schlägt fehl. Jetzt können sie das Projekt nicht bauen. Und Sie sollten auch vorsichtig sein, denn wenn Sie den AFNetworking-Quellcode verlieren, können Sie auch nicht bauen …

Also verwenden wir jetzt CocoaPods und schieben die Quelle für jede Abhängigkeit in unser zentrales Repo. Wenn jetzt jemand ein Repo klont, erhält er den gesamten Code, den er benötigt, und er kann das Projekt problemlos erstellen. Sie brauchen nicht einmal CocoaPods, um die App zu erstellen – es funktioniert einfach.

Also lass CocoaPods seine Arbeit machen. CocoaPods verwaltet Abhängigkeiten für Ihre Xcode-Projekte. (c) https://github.com/CocoaPods/CocoaPods

1257820cookie-checkWie erstelle ich einen CocoaPod mit verschachtelten Git-Submodulen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy