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

Post on 31-Aug-2014

814 views 2 download

Tags:

description

 

transcript

Dependencies management

with CocoaPods

Denis Lebedev

Why do we need it?

Drag & drop

Git submodule

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

CocoaPodshttp://cocoapods.org

Install

$ sudo gem install 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'

Add libs to the project$ pod install

How it works

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

Spec example

Contribute(>650 podspecs already)

Podfile options

Platformplatform :ios, 4.0

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

Multiple targetspod 'RestKit'

target :debug do pod 'CocoaLumberjack'end

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

Turn off all warnings in lib sources

inhibit_all_warnings!

Podspec sources

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

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

libAwesome'

*podspec should be in the folder

Pod specification

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

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

Spec template

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

More

weak_frameworks

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

Share pod specifications

‘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

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

‘Appstore’ for libs

Thanks!Questions?

twitter: @delebedevskype: d2.lebedev