아요 개발 일기

[iOS] Cocoapod vs Carthage vs SPM 본문

iOS

[iOS] Cocoapod vs Carthage vs SPM

소진이 2023. 1. 6. 17:27

안녕하세여~~

오늘은 Cocoapod, Carthage, SPM을 비교해 보려고 합니다.

공부하다보니 저 세가지의 다른점이 무엇인지 궁금해서 가지고왔어뇽

 

 

Cocoapod, Carthage, SPM 은 모두 Package Manager입니다.

라이브러리들을 관리해주는 친구들이죠! (의존성 관리)

저는 Cocoapod이랑 SPM만 사용해 보았어요,, Carthage는 완전 초면이랍니다!

세가지나 비교해야하니, 이 글은 간단한 설명과 장단점에 대해서만 알아보겠습니다 😄

 


 

Cocoapod : 코코아팟

Ruby로 만들어졌으며 Pod라는 라이브러리를 검색할 수 있는 사이트를 제공함으로써 라이브러리를 보다 찾기 쉽게해주는 집중형 시스템을 제공합니다.


설치 및 간단한 라이브러리 추가법

 

1.  CocoaPods 설치

	sudo gem install cocoapods

 

2.  Pod 추가하기

CocoaPods 라이브러리를 적용하고 싶은 프로젝트 경로로 이동 후,

아래와 같은 명령어를 사용하여 podfile 을 생성합니다.

 

pod init

 

아래 명령어 중 하나를 선택하여 Podfile에 들어가줍니다.

$ nano Podfile
$ vi Podfile
$ open -e podfile

 

원하는 pod를 추가합니다.

pod 'RxSwift', '~> 5.1.3' // 뒤에는 버전 정보 의미

만약, 쓰고 싶은 라이브러리를 어떻게 쓰는지 알고싶거나, 버전을 알고 싶다면? https://cocoapods.org/

 

3.  Pod 설치

pod install

UI를 미리 보고 싶을때는 cocoacontrols.com 를 추천합니다!

 


 

장단점

 

장점

  • 사용하기 쉽다
  • 거의 대부분의 라이브러리를 지원한다
  • 누구나 쉽게 어떤 의존성이 애플리케이션에 있는지 알 수 있다.
  • pod outdated 명령어로 쉽게 새로운 버전이 있는지 체크할 수 있다.

단점

  • 라이브러리를 다운받아 설치(pod install or update)하는데 오랜 시간이 걸린다
  • 프로젝트를 빌드 할 때마다 모든 팟 라이브러리가 같이 빌드되므로 다른 도구를 사용할 때 보다 프로젝트 빌드 시간이 느리다.

 


 

Carthage : 카르타고

[ decentralized dependency manager ]

Cocoapods처럼 직접 프로젝트와 통합하지 않아, 라이브러리만 관리 및 빌드하고 이를 바이너리 프레임워크의 형태로 제공합니다. 사용자가 직접 Xcode내에서 프로젝트로 연결해주어야합니다. (즉, 사용자에게 프로젝트 구성의 관한 모든 권한 있음)

대부분 Github을 기반으로 배포되고 분산형 시스템의 성격을 갖습니다.

 

설치 및 간단한 라이브러리 추가법

carthage는 HomeBrew를 통해 설치할 수 있습니다.

 

Carthage 설치하기

$ brew install carthage

 

원하는 라이브러리 추가

github "SwfityJSON/SwfityJSON"

 

적용하기

Carthage/Checkout 폴더에 라이브러리를 설치해주고 Carthage/Build 폴더에서 빌드를 진행합니다.

$ carthage update

이후, Xcode내에서 Carthage/ Build에 있는 빌드된 바이너리 형태의 프레임워크를 연결시켜주어야 합니다.

Carthage는 직접적으로 Xcode의 설정이나 프로젝트의 설정을 건드리지 않습니다.

이러한 이유로 프로젝트 구성에 있어서 모든 구성은 사용자에게 있습니다.

 


 

장단점

장점

  • 미리 빌드된 프레임워크를 사용하기 때문에 빌드 속도가 빠르다.
  • 모든 프로젝트 구성 권한은 사용자에게 있다.
  • 분산형이다.
  • 처음에 프레임워크를 추가하는 것 외에 프로젝트 설정이 바뀌지 않는다.

단점

  • 의존성이 추가될 때마다 프레임워크로 추가해야 하기 때문에 설정하는 것이 번거롭다.
  • 불안정하다.
  • 사용자나 인기가 많은 라이브러리가 아니라면 카르타고를 지원하지 않을 수도 있다

 


 

SPM (Swift Package Manager)

 

장점

  • 애플이 지원하는 패키지 매니저이다.
  • 빠르고 쉽게 라이브러리를 추가할 수 있다.
  • 별다른 설치가 필요없다
  • Xcode Project 파일이 꼭 필요한 것이 아니므로 리눅스에서도 사용할 수 있다.
  • Package.swift 파일 이외에 수행할 설정이 없다.
  • Xcode의 GUI 환경에서 관리가 가능하다

단점

  • 아직은 지원하지 않는 라이브러리가 많다.