web-dev-qa-db-ja.com

ポッド仕様の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" => "[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

問題は、bitbucketリポジトリを指す依存関係にあります。私はこれをローカルの依存関係で動作するようにしましたが、何らかの理由でgitリポジトリを使用すると動作しません。助けてくれてありがとう!

40
LunaCodeGirl

Podspec DSLのdependencyディレクティブは、依存関係の名前とオプションのバージョン要件のみをサポートします。 :gitオプションはサポートされていません。 Podfileで使用することも、マスターリポジトリに加えてカスタムプライベートリポジトリを使用することもできます。

28
Fabio

私は同じ問題に直面し、 古い方法でこの問題を解決する別の方法 (@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'

しかし、すべてのはPodsの最新バージョンでは機能しません:localv0.17.1までの副作用として機能していました。

これから、Player.podspecで完全な依存関係を指定できます。

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

PodfileDownloader(メインプロジェクト)では、FFMpegPlayerbeforePlayer podを指定するだけです。

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

したがって、基本的に、すべてのサブポッドはメインのポッドファイルにリストされるようになり、ポッドのバージョン間の競合がないことが保証されます。

74
Roman B.