2013-06-03 26 views
36

を働いていない私は、このspecファイルで構文エラーを取得しています:Cocoapods依存性は

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 

問題はビットバケットレポを指し依存です。私はこれをローカルの依存関係で動作させていますが、何らかの理由でgit repoが動作していません。助けてくれてありがとう!

答えて

26

podspec DSLのdependencyディレクティブは、依存関係の名前と任意のバージョン要件のみをサポートしています。 :gitオプションはサポートされていません。あなたはPodfileでそれを使うかもしれませんし、マスターrepoに加えてカスタムプライベートレポを使いたいかもしれません。

+0

ありがとう!これが私を殺していた。私はあなたが使用することができたように感じる:gitと私は私が使ったことが分かっている:私のポッドの仕様でローカル。 CocoaPodの最後のカップルバージョンでこれが変わったようです。同様の注意点として、ポッドファイルなしでポッド仕様に依存できるかどうかは分かりますか?または、.xcodeprojなしでpodファイルを作成できますか?助けてくれてありがとう! – LunaCodeGirl

+0

podspecでgitを使用することはできません。ポッドファイルでのみ使用できます。これは以前から使用されていましたが、実装の詳細であり、決して意図された機能ではありませんでした。なぜそれがデザインの一部ではないのか分かりません。私はこの機能も好きだった。 ローカル:あなたは:pathを使って、これまで何をしていたかを行うことができます:ローカル。 –

+1

私はあなたがポッドスペックを持つその依存関係なしでポッドスペックに依存することはできないと思います。 (そして、それはココアポッドが認識しているスペックレポでなければなりません。あなたは[私的仕様レポを作成する]ことができます(http://i.ndigo.com.br/2012/04/using-cocoapods-for-in-何らかの理由でpodspecをメインのSpecsリポジトリに公開したくない場合には、これを達成するために)。 Xcodeプロジェクトなしでココアポッドを作ることができると思います。 podspecでは 's.source_files = '**/*。{h、m}'のようなファイルを含めてください。 –

57

私は同じ問題に直面し、another way to solve this problem in old manner(@eliperkinsのおかげで)があることを発見しました。

小さなプロジェクトPlayerを使用するメインプロジェクトDownloaderがあります。これはマイクロプロジェクトFFMpegPlayerに依存します。

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

しかし、すべてのことがポッドの最新バージョンとを動作しません、それは:local判明として働いていた。だから、何が欲しいのは、このようになります。つまり、あなたのPlayer.podspecに依存関係を持つことです副作用はv0.17.1までです。

今から、あなたはPlayer.podspecでクリーンな依存関係を指定することができます。

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

:あなただけFFMpegPlayerPlayer前にポッドを指定する必要がDownloader(メイン・プロジェクト)のPodfile

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

をしたがって、基本的に、すべてのサブパッドがメインのPodfileにリストされ、ポッドバージョン間で競合が発生しないことが保証されます。

+0

こんにちはローマンこれはどうですか?http://stackoverflow.com/q/19548890/1217298 –

+0

:path制約は、ローカルポッドの前に適用されています。 – fatuhoku

+1

ありがとうございました... – Jakob