Cocoa Pods (Framework Management for iOS)

iOS / OS X App을 개발하는 과정에서 open source 라이브러리나, 배포된 SDK를 써야 하는 경우가 발생한다. Framework 파일이나 sourcefile 을 다운로드 받아서 Project에 import 할 수도 있지만 간혹 Framework 끼리 충돌하거나, Framework를 쓰기 위해서 필요한 다른 라이브러리나 Framework가 설치가 되어있지 않아서 문제가 생기는 경우가 많다.

이런 문제들을 간단하게 해결할 수 있는 솔루션이 Cocoa Pods 이다. Cocoa Pods는 Framework와 라이브러리들의 dependency를 관리해주는 개발 툴이다. (조만간 GUI App으로도 배포될 것으로 보인다.)
이 포스팅은 iOS나 OS X 개발 프로젝트에 Cocoa Pods을 적용하는 방법에 대해서 설명하는 메뉴얼이며 2015년 1월, Cocoa Pod v0.35 와 XCode6 기준으로 작성되었다.

Cocoa Pod

“CocoaPods is the dependency manager for Cocoa projects. It has thousands of libraries and can help you scale your projects elegantly.”
– CocoaPod.org

  • Cocoa 프로젝트를 위한 dependency manager 툴. 주로 OS X 과 iOS 개발에서 외부 framework 관리를 위해서 활용
    — Framework의 dependency를 일일히 확인하지 않아도 된다.
    — Framework 간 충돌을 방지해준다.
    — Framework의 버젼 관리가 용이함.
    — 최근 많은 iOS/OS X SDK와 Open source Project 들이 Cocoa Pod으로 배포되고 있음.
    불가피한 경우(최신 버젼이나 아예 Cocoa Pod에서 제공되지 않는 경우)를 제외하고는 Cocoa Pod으로 프레임워크를 관리 할 것을 권장
  • Ruby 기반의 툴.

설치 방법

CocoaPod Guide – Getting Started
– Mac에는 기본적으로 Ruby 가 깔려 있음
주의 : Cocoa Pod으로 버젼관리를 하려면 Xcode에서 해당 프로젝트를 workspace로 관리 해야 한다.
— 기존 프로젝트를 Workspace로 만들기 위해선 아래 링크 참조
Apple Dev – Adding an Existing Project to a Workspace
– 터미널에서 아래 명령어로 Cocoa Pod 설치

$ sudo gem install cocoapods 
  • Cocoa Pod 버젼 업데이트는 아래 명령어로
$ [sudo] gem install cocoapods

Cocoa Pod 시작하기

  • 해당 프로젝트 폴더에서 Cocoa Pod init
$ pod init

pod init을 하면 프로젝트 폴더에 Podfile 이 생성된다.
생성된 Pod File을 열고 아래 예와 같이 스크립트를 짜 넣는다. 자세한 Pod file 문법은 CocoaPod Guide – The Pod File을 참조하자.

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'

pod 'AFNetworking', '~> 2.0'
pod 'ARAnalytics', '~> 2.7'

Pod File을 저장하고 Cocoa Pod 으로 프레임워크들을 설치한다.

$ pod install

Xcode 프로젝트를 열때 항상 .xcodeproj 파일이 아니라 .xcworkspace (workspace 파일) 로 해당 프로젝트를 연다. (그렇지 않으면 Cocoa Pod에서 설치된 Framework를 쓸 수 없음)

Xcode 설정

Xcode Workspace에서 프로젝트를 열었을때, Cocoa Pod의 Framework를 쓰기 위해서 몇가지 설정이 필요할 수도 있다.

Pod File의 예

iOS App 프로젝트인 ExampleProject가 다음의 외부 Framework 를 Cocoa Pod으로 설치한다고 가정하자.
– Facebook iOS SDK 3.20.0
– AWS iOS SDK 2.0.12
– zipzap 8.0.1 (Zip File 을 다루는 Framework)
– SDWebImage 3.7 (이미지 캐시, 웹에서 다운로드 등)
– GBVersionTracking (App 의 버젼을 추적하는 Framework)

이 경우 Pod File의 코드는 아래와 같다.

# Uncomment this line to define a global platform for your project
platform :ios, "8.0"

target 'ExampleProject' do

pod 'Facebook-iOS-SDK', '3.20.0'
pod 'AWSiOSSDKv2', '2.0.12'
pod 'zipzap', '8.0.1'
pod 'SDWebImage', '~> 3.7'
pod 'GBVersionTracking'
end

target 'ExampleProjectTests' do
end
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s