33
Dependencies management with CocoaPods Denis Lebedev

Денис Лебедев-Управление зависимостями с помощью CocoaPods

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Dependencies management

with CocoaPods

Denis Lebedev

Page 2: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Why do we need it?

Page 3: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Drag & drop

Page 4: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Git submodule

Page 5: Денис Лебедев-Управление зависимостями с помощью CocoaPods

3rd-party (do they exist at all?)

Page 6: Денис Лебедев-Управление зависимостями с помощью CocoaPods

CocoaPodshttp://cocoapods.org

Page 7: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Install

$ sudo gem install cocoapods

Page 8: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Create Podfile

platform :iospod 'AFNetworking'pod 'MBProgressHUD'pod 'OHAttributedLabel'pod 'MagicalRecord', '= 1.8.3'pod 'EGOImageLoading'pod 'AQGridView'pod 'Facebook-iOS-SDK'pod 'DCIntrospect'pod 'OCMock'

Page 9: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Add libs to the project$ pod install

Page 10: Денис Лебедев-Управление зависимостями с помощью CocoaPods

How it works

Page 11: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Write own specs$ pod spec create MySpec$vim MySpec.podspec$pod spec lint MySpec.podspec

Page 12: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Spec example

Page 13: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Contribute(>650 podspecs already)

Page 14: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Podfile options

Page 15: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Platformplatform :ios, 4.0

Versioningpod ‘EgoImageView’, ‘<=1.2’pod ‘EgoImageView’, :head

Page 16: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Multiple targetspod 'RestKit'

target :debug do pod 'CocoaLumberjack'end

target :test, :exclusive => true do link_with “MyAppTests” pod 'Kiwi'end

Page 17: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Turn off all warnings in lib sources

inhibit_all_warnings!

Page 18: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Podspec sources

Page 21: Денис Лебедев-Управление зависимостями с помощью CocoaPods

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

Page 22: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Local podpod 'libAwesome', :local => '~/path/

libAwesome'

*podspec should be in the folder

Page 23: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Pod specification

Page 24: Денис Лебедев-Управление зависимостями с помощью CocoaPods
Page 25: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Dependencies...s.dependency = ‘JSONKit’, ‘<1.4’...

Page 26: Денис Лебедев-Управление зависимостями с помощью CocoaPods

~pod spec create https://github.com/repo

Spec template

Page 27: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Subspecspod ‘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

Page 28: Денис Лебедев-Управление зависимостями с помощью CocoaPods

More

weak_frameworks

s.osx.source_files = ‘MyNSTableView.{h,m}’

Page 29: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Share pod specifications

Page 30: Денис Лебедев-Управление зависимостями с помощью CocoaPods

‘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

Page 31: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Public specs repo*$ cd ~/.cocoapods/master$ git remote set-url origin [email protected]:CocoaPods/Specs.git

*If you have push access to master-repo

Page 32: Денис Лебедев-Управление зависимостями с помощью CocoaPods

‘Appstore’ for libs

Page 33: Денис Лебедев-Управление зависимостями с помощью CocoaPods

Thanks!Questions?

twitter: @delebedevskype: d2.lebedev