it-swarm.com.de

Cocoapods-Abhängigkeit in der Pod-Spezifikation funktioniert nicht

Ich erhalte einen Syntaxfehler mit dieser Spezifikationsdatei:

Pod::Spec.new do |s|

s.name         = "BSImageLoader"

s.version      = "0.1.3"

s.summary      = "The image loading framework for PicPoc"

s.homepage     = "https://bitbucket.org/boolalsofware/bsimageloader"

s.license      = 'MIT'

s.author       = { "Spencer Comerford" => "[email protected]" }

s.source       = { :git => "[email protected]:boolalsofware/bsimageloader.git", :tag => "0.1.3" }

s.source_files = 'Classes/*.{h,m}', 'Classes/PublicHeaders/*'

s.public_header_files = 'Classes/PublicHeaders/*.h'

s.dependency = 'BSTiledImageView', :git => '[email protected]:boolalsofware/bstiledimageview.git'

s.frameworks = 'QuartzCore', 'AssetsLibrary', 'UIKit'

s.requires_arc = true

end

Das Problem liegt in der Abhängigkeit, die auf ein Bitbucket-Repo hinweist. Ich habe das gemacht, um mit lokalen Abhängigkeiten zu arbeiten, aber aus irgendeinem Grund funktioniert es mit einem Git-Repo nicht. Vielen Dank für jede Hilfe!

40
LunaCodeGirl

Die Anweisung dependency von podspec DSL unterstützt nur den Namen der Abhängigkeit und alle optionalen Versionsanforderungen. Das :git Option wird nicht unterstützt. Sie können es in Ihrem Podfile verwenden oder ein benutzerdefiniertes privates Repo zusätzlich zum Master-Repo verwenden.

28
Fabio

Ich bin mit dem gleichen Problem konfrontiert und habe festgestellt, dass es eine andere Möglichkeit gibt, dieses Problem auf alte Weise zu lösen (danke an @eliperkins).

Nehmen wir an, Sie haben ein Hauptprojekt Downloader, das ein kleineres Projekt Player verwendet, das vom Mikroprojekt FFMpegPlayer abhängt. Sie möchten also eine Abhängigkeit in Ihrem Player.podspec Haben, die so aussehen würde:

s.dependency = 'FFMpegPlayer', :git => '...FFMpegPlayer.git' or 
s.dependency = 'FFMpegPlayer', :local => '../FFMpegPlayer'
s.dependency = 'FFMpegPlayer', :path => '../FFMpegPlayer'
s.dependency = 'FFMpegPlayer', :podspec => '../FFMpegPlayer/FFMpegPlayer.podspec'

Aber alles, was mit der neuesten Version von Pods nicht funktioniert und es stellte sich heraus, dass :local Als Nebeneffekt bis zu v0.17.1.

Ab sofort können Sie eine saubere Abhängigkeit in Player.podspec Angeben:

s.dependency = 'FFMpegPlayer' (its ok if that spec does not exist in public)

In Podfile von Downloader (Hauptprojekt) müssen Sie nur FFMpegPlayer angeben, bevor Sie Player Pod:

pod 'FFMpegPlayer', :path => '../FFMpegPlayer' (micro project)
pod 'Player', :path => '../Player' (small project which depends on FFMpegPlayer)

Im Grunde genommen sind alle Ihre Sub-Pods jetzt in der Haupt-Pod-Datei aufgeführt, sodass keine Konflikte zwischen den Pod-Versionen auftreten.

74
Roman B.