[iOS] CocoaPods을 이용한 의존성 관리

Posted by Kim Heebeom on March 12, 2018

Cocoa 프로젝트에서 의존성 관리를 위한 CocoaPods라는 오픈소스가 있다.
오픈소스가 만들어진지 햇수로 8년이 되었고 여전히 왕성하게 진행되고 있다.(ruby로 짜여졌다)

현재 약 43,000개 정도의 라이브러리가 Cocoapods을 통해서 제공되고 있다.

Cocoapods Install

Mac은 기본으로 Ruby가 설치되어 있어서 명령어 한 줄로 설치가 가능하다.

$ sudo gem install cocoapods

Pod init

이제 프로젝트가 있는 디렉토리로 이동해서 init을 해줘야 한다.

$ cd MyProject
$ pod init

해당 명령을 치면 프로젝트에 Podfile을 추가된다. Podfile을 아래와 같이 수정한다.

# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'

target 'MyProject' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MyProject
  # 각자 필요한 것들을 추가합니다.
  pod 'SwiftLint'
  pod 'SwiftyJSON', '~> 2.3'
  pod 'Eureka', :git => 'https://github.com/xmartlabs/Eureka.git', :branch => 'Xcode9-Swift3_2'
end

pod 뒤에 버전을 명시할 경우 해당 버전으로 의존성이 추가되고 버전을 명시하지 않으면 최신 버전을 자동으로 가져온다.

  • 서비스를 개발할 때는 버전을 명시해서 특정 버전을 고정적으로 가져오는게 안정성을 위해서 좋다. 라이브러리 버전 업으로 인해 내 서비스에 영향을 미칠 수 있기 때문

버전 대신 git에 있는 repo를 지정 할 수도 있다. 서비스에서 사용할 라이브러리를 포크해서 관리할 경우 더 이상 코드에 변화가 생기지 않아서 버전을 명시하는 방법보다 의존성 관리면에서는 좀 더 좋다.

  • 사용할 수 있는 라이브러리는 CocoaPods 공식 사이트에서 확인 가능하다.

Pod install

이제 수정한 Podfile을 install 명령을 통해 설치한다.

$ pod install

install을 하고나면 이제부터 프로젝트 빌드를 위해서 프로젝트MyProject.xcodeproj로 여는 게 아니라 workspace로 열어야만 한다.

$ open MyProject.xcworkspace

이제 추가한 라이브러리를 코드에서 import하고 사용할 수 있게 된다.

Pod update

내가 사용하는 라이브러리들이 업데이트되면 Pod update로 list를 업데이트할 수 있다.

$ pod update

다만, 새로운 pod을 추가하고 Pod update 명령을 수행하면 아무 일도 생기지 않는다.

Pod install을 먼저 수행해야 함.

$ pod update PODNAME

만약 뒤에 특정 pod name을 명시하게 되면 해당 pod만 업데이트할 수 있다.


[Reference] cocoapods official site