Successfully reported this slideshow.
Your SlideShare is downloading. ×

CocoaPods

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 32 Ad

More Related Content

Slideshows for you (20)

Similar to CocoaPods (20)

Advertisement

Recently uploaded (20)

CocoaPods

  1. 1. Advanced dependencies with CocoaPods Denis Lebedev @delebedev
  2. 2. Why do we need it?
  3. 3. Drag & drop
  4. 4. Git submodule
  5. 5. 3rd-party (do they exist at all?)
  6. 6. CocoaPods http://cocoapods.org
  7. 7. Install $ sudo gem install cocoapods
  8. 8. Create Podfile platform :ios pod 'AFNetworking' pod 'MBProgressHUD' pod 'OHAttributedLabel' pod 'MagicalRecord', '= 1.8.3' pod 'EGOImageLoading' pod 'AQGridView' pod 'Facebook-iOS-SDK' pod 'DCIntrospect' pod 'OCMock'
  9. 9. Add libs to the project $ pod install
  10. 10. How it works
  11. 11. Write own specs $ pod spec create MySpec $vim MySpec.podspec $pod spec line MySpec.podspec
  12. 12. Spec example
  13. 13. Contribute (>650 podspecs already)
  14. 14. Podfile options
  15. 15. Platform platform: ios, 4.0 Versioning pod ‘EgoImageView’, ‘<=1.2’ pod ‘EgoImageView’, ‘:head’
  16. 16. Multiple targets pod 'RestKit' target :debug do pod 'CocoaLumberjack' end target :test, :exclusive => true do link_with “MyAppTests” pod 'Kiwi' end
  17. 17. Turn off all warnings in lib sources inhibit_all_warnings!
  18. 18. Podspec sources
  19. 19. Spec in the root of lib repo pod 'AFNetworking', :git => 'https://github.com/ gowalla/AFNetworking.git', :commit => '082f8319af'
  20. 20. Lib without podspec pod 'JSONKit', :podspec => 'https://raw.github.com/ gist/1346394/1d26570f68ca2d72/JSONKit.podspec'
  21. 21. Lib without any available podspec pod do |spec| spec.name = 'JSONKit' spec.version = '1.4' spec.source = { :git => 'https://github.com/ johnezang/JSONKit.git', :tag => 'v1.4' } spec.source_files = 'JSONKit.*' end
  22. 22. Local pod pod 'libAwesome', :local => '~/path/libAwesome' *podspec should be in the folder
  23. 23. Pod specification
  24. 24. Dependencies ... s.dependency = ‘JSONKit’, ‘<1.4’ ...
  25. 25. Subspecs pod ‘RestKit/JSON’ Pod::Spec.new do |s| s.name = 'RestKit' s.preferred_dependency = 'JSON' ... s.subspec 'JSON' do |js| js.dependency 'RestKit/ObjectMapping/JSON' js.dependency 'RestKit/ObjectMapping/CoreData' js.dependency 'RestKit/UI' end s.subspec 'XML' do |xs| ... end ... end
  26. 26. More weak_frameworks s.osx.source_files = ‘MyNSTableView.{h,m}’ s.ios.source_files = ‘MySuperUITableView.{h,m}’
  27. 27. Share pod specifications
  28. 28. ‘Private’ specs repo $ pod repo add my-spec-repo http://github.com/ my-account/spec-repo.git $ pod push my-spec-repo $ cd ~/.cocoapods/my-spec-repo $ git remote add upstream git://github.com/ CocoaPods/Specs.git
  29. 29. Public specs repo* $ cd ~/.cocoapods/master $ git remote set-url origin git@github.com:CocoaPods/Specs.git *If you have push access to master-repo
  30. 30. ‘Appstore’ for libs
  31. 31. Thanks! Questions?

Editor's Notes

  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

×