pod规范中Cocoapods的依赖性不起作用

时间:2013-06-03 20:16:15

标签: ios xcode cocoapods

我在这个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它不起作用。谢谢你的帮助!

2 个答案:

答案 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中使用它,或者除了主存储库之外,您可能还想使用自定义私有存储。