2013-06-03 24 views
36

sto ottenendo un errore di sintassi con questo file spec:Cocoapods dipendenza nel pod non spec lavoro

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 

Il problema è con la dipendenza che punta ad un pronti contro termine bitbucket. Ho ottenuto questo per funzionare con le dipendenze locali, ma per qualche ragione con un repo git non funziona. Grazie per qualsiasi aiuto!

risposta

26

La direttiva dependency di DSL podspec supporta solo il nome della dipendenza e qualsiasi requisito di versione facoltativo. L'opzione :git non è supportata. Potresti utilizzarlo nel tuo Podfile o potresti voler utilizzare un repository privato personalizzato oltre al repository principale.

+0

Grazie! Questo mi stava uccidendo. Mi sento come se fossi in grado di usare: git e so che usavo usare: local nelle specifiche del mio pod. Sembra che questo sia cambiato nelle ultime due versioni di CocoaPods. Con una nota simile, sai se puoi avere una dipendenza in una specifica pod senza un file pod? O puoi creare un file pod senza un .xcodeproj? Grazie ancora per l'aiuto! – LunaCodeGirl

+0

Non puoi più usare: git in un podspec, solo in un Podfile. Funzionava, ma era un dettaglio di implementazione e mai una funzione prevista. Non sono sicuro del motivo per cui non fa parte del design. Mi è piaciuta anche questa funzione. Per quanto riguarda: local, è possibile utilizzare: percorso per fare ciò che si era abituati a fare: local. –

+1

Non penso che tu possa avere una dipendenza in un podspec senza quella dipendenza che ha un podspec. (E deve essere in un repository specifico di cui i cocoapod sono a conoscenza. Potresti [creare un repository privato per spec.] (Http://i.ndigo.com.br/2012/04/using-cocoapods-for-in-in- componenti della casa /) per raggiungere questo se per qualche motivo non si desidera pubblicare il podspec nel repository delle specifiche.) Penso che si possa fare un cocoapod senza un progetto Xcode. Nel podspec assicurati di includere i file con qualcosa come 's.source_files = '**/*. {H, m}'' –

57

Ho riscontrato lo stesso problema e ho riscontrato che c'è another way to solve this problem in old manner (grazie a @eliperkins).

Diciamo che si dispone di un progetto principale Downloader, che utilizza il progetto più piccolo Player, che dipende dal micro progetto FFMpegPlayer. Quindi, ciò che si desidera è di avere una dipendenza nella vostra Player.podspec, che sarebbe simile a questa:

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

Ma tutto questo non funziona con l'ultima versione di baccelli e si scopre :local lavorava come effetto collaterale fino a v0.17.1.

Da oggi, è possibile specificare la dipendenza pulita in Player.podspec:

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

Nel Podfile di Downloader (progetto principale) è sufficiente specificare FFMpegPlayerprimaPlayer pod:

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

Quindi, in pratica, tutti i subpod sono ora elencati nel Pod principale, che non garantisce conflitti tra le versioni dei pod.

+0

Hey Roman .. che dire di questo: http://stackoverflow.com/q/19548890/1217298 –

+0

È fondamentale che: il vincolo del percorso sia applicato prima del pod locale ...! – fatuhoku

+1

grazie mille ... – Jakob

Problemi correlati