2013-06-03 23 views
36

Tôi nhận được một lỗi cú pháp với file spec này:Cocoapods phụ thuộc trong pod spec không làm việc

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 

Vấn đề là với sự phụ thuộc mà chỉ tại một repo bitbucket. Tôi đã nhận được điều này để làm việc với phụ thuộc địa phương, nhưng đối với một số lý do với một repo git nó không hoạt động. Cảm ơn vì bất kì sự giúp đỡ!

Trả lời

26

Chỉ thị dependency của podspec DSL chỉ hỗ trợ tên của phụ thuộc và bất kỳ yêu cầu phiên bản tùy chọn nào. Tùy chọn :git không được hỗ trợ. Bạn có thể sử dụng nó trong Podfile của bạn hoặc bạn có thể muốn sử dụng một repo riêng tùy chỉnh ngoài repo chủ.

+0

Cảm ơn bạn! Điều này đã giết chết tôi. Tôi cảm thấy như bạn sử dụng để có thể sử dụng: git và tôi biết tôi sử dụng để sử dụng: địa phương trong thông số kỹ thuật pod của tôi. Có vẻ như điều này đã thay đổi trong vài phiên bản trước của CocoaPods. Trên một lưu ý tương tự, bạn có biết liệu bạn có thể có sự phụ thuộc trong thông số nhóm không có tệp pod không? Hoặc bạn có thể tạo một tệp pod mà không có tệp .xcodeproj không? Cảm ơn một lần nữa vì sự giúp đỡ! – LunaCodeGirl

+0

Bạn không thể sử dụng: git trong podspec nữa, chỉ trong một Podfile. Nó được sử dụng để làm việc, nhưng nó là một chi tiết thực hiện và không bao giờ là một tính năng dự định. Tôi không chắc tại sao nó không phải là một phần của thiết kế. Tôi cũng thích tính năng này. Đối với: địa phương, bạn có thể sử dụng: đường dẫn để làm những gì bạn sử dụng để làm với: địa phương. –

+1

Tôi không nghĩ rằng bạn có thể có một sự phụ thuộc trong một podspec mà không có sự phụ thuộc đó có một podspec. (Và nó phải có trong một repo spec mà cocoapods là nhận thức được. Bạn có thể [tạo ra một repo spec tư nhân] (http://i.ndigo.com.br/2012/04/using-cocoapods-for-in- house-components /) để đạt được điều đó nếu vì một lý do nào đó bạn không muốn xuất bản podspec trong repo thông số chính.) Tôi nghĩ bạn có thể làm một cái cocoapod không có dự án Xcode. Trong podspec hãy chắc chắn rằng bạn bao gồm các tệp với một cái gì đó như 's.source_files = '**/*. {H, m}'' –

57

Tôi đã gặp phải sự cố tương tự và thấy rằng có another way to solve this problem in old manner (nhờ @eliperkins).

Cho phép nói rằng bạn có một dự án chính Downloader, sử dụng dự án nhỏ hơn Player, phụ thuộc vào dự án vi mô FFMpegPlayer. Vì vậy, những gì bạn muốn là phải có một sự phụ thuộc vào Player.podspec của bạn, mà sẽ trông như thế này:

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

Nhưng tất cả những gì sẽ không làm việc với phiên bản mới nhất của Pods và nó quay ra :local được làm việc như một tác dụng phụ lên đến v0.17.1.

Từ bây giờ, bạn có thể xác định sự phụ thuộc sạch trong Player.podspec:

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

Trong Podfile của Downloader (dự án chính), bạn chỉ cần có để xác định FFMpegPlayertrướcPlayer pod:

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

Vì vậy, về cơ bản, tất cả các subpod của bạn hiện được liệt kê trong Podfile chính, đảm bảo không có xung đột giữa các phiên bản nhóm.

+0

Hey Roman .. what about this: http://stackoverflow.com/q/19548890/1217298 –

+0

Điều quan trọng là: ràng buộc đường dẫn được áp dụng trước nhóm cục bộ ...! – fatuhoku

+1

cảm ơn bạn rất nhiều ... – Jakob

Các vấn đề liên quan