我在这个spec文件中遇到语法错误:
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" => "Spencevail@gmail.com" }
s.source = { :git => "git@bitbucket.org: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 => 'git@bitbucket.org:boolalsofware/bstiledimageview.git'
s.frameworks = 'QuartzCore', 'AssetsLibrary', 'UIKit'
s.requires_arc = true
end
问题在于指向bitbucket repo的依赖性。我已经使用本地依赖项,但由于某些原因使用git repo它不起作用。谢谢你的帮助!
答案 0 :(得分:71)
我遇到了同样的问题,发现有another way to solve this problem in old manner(感谢@eliperkins)。
假设您有一个主项目Downloader
,它使用较小的项目Player
,这取决于微项目FFMpegPlayer
。所以你想要的是在你的Player.podspec
中有一个依赖,如下所示:
s.dependency = 'FFMpegPlayer', :git => '...FFMpegPlayer.git' or
s.dependency = 'FFMpegPlayer', :local => '../FFMpegPlayer'
s.dependency = 'FFMpegPlayer', :path => '../FFMpegPlayer'
s.dependency = 'FFMpegPlayer', :podspec => '../FFMpegPlayer/FFMpegPlayer.podspec'
但所有无法正常使用最新版本的Pod,结果:local
的副作用最多为v0.17.1
。
从现在起,您可以在Player.podspec
中指定干净的依赖关系:
s.dependency = 'FFMpegPlayer' (its ok if that spec does not exist in public)
在Podfile
(主要项目)的Downloader
中,您必须先指定FFMpegPlayer
Player
pod:
pod 'FFMpegPlayer', :path => '../FFMpegPlayer' (micro project)
pod 'Player', :path => '../Player' (small project which depends on FFMpegPlayer)
所以,基本上,所有的subpod现在都列在主Podfile中,这保证了pods版本之间没有冲突。
答案 1 :(得分:28)
podspec DSL的dependency
指令仅支持依赖项的名称和任何可选的版本要求。不支持:git
选项。您可以在Podfile中使用它,或者除了主存储库之外,您可能还想使用自定义私有存储。