개발을 시작하는 이야기

Cocoa Pods vs Swift Package Manager 본문

개발 이야기/Swift

Cocoa Pods vs Swift Package Manager

Teiresias 2022. 7. 23. 01:24

2021년부터 Swift를 해온 나는 지금껏 Swift Package Manager (aka. SPM)를 사용해서 회사에가서 처음으로 Cocoa Pods을 마주했다. SeSac과정 진행중에 한번 설치하려고 했었으나 그당시 M1이 나오고 몇달 되지 않은 시기라 Homebrew도 겨우 설치했을 때였다. (물론 나의 어설픈 리눅스도 한몫 했지만) 그래서 Cocoa Pods도 마찬가지로 호환이 불안정했고 나를 비롯한 몇몇 M1유저들은 사용하지 못했었다.

 

 아무튼 그런데 기존 프로젝트를 유지보수 및 업데이트를 해오다가 이번에 리팩토링을 추진하는 와중에 StoryBoard와 Code Base를 두고 고민을 하는데, 문득 Cocoa Pods과 SPM은 차이가 있을까? 그리고 혼용해서 사용해도 괜찮을까? 같은 의문이 들었다. 물어볼 사람이 마땅치 않은 나로선 내가 해별해 보기로 했다.

Cocoa Pods

 일단 Cocoa Pods은 Swift와 Object-C Cocoa 프로젝트를 위한 관리도구로, Ruby로 구축되었다. Cocoa Pods은 공식 웹사이트에서 사용할 수 있는 프레임워크를 검색해서 연결해주어야 한다. 이때 Specs라는 기본 저장소를 기반으로 호스팅한다. Mac에 설치하고 터미널로 사용해야 한다. 

장점

1. 사용하기 쉽다.

2. 거의 모든 프레임워크가 지원한다.

3. pod outdated를 사용하여 새 버전의 종속성을 사용할 수 있는지 쉽게 확인할 수 있다. 

단점

1. 라이브러리를 다운받아 설치, 업데이트 하는데 오랜 시간이 걸린다.

2. 프로젝트를 빌드 할 때마다 모든 팟 라이브러리가 같이 빌드되기 때문에 다른 도구를 사용할 때 보다 프로젝트 빌드 시간이 느리다.

Swift Pakage Manager (SPM)

 Swift 3.0에서 새로 나온 Apple의 공식 패키지 관리도구로, Xcode 10  이상만 있으면 쉽게 사용이 가능하다. 초창기에는 지원되는 라이브러리가 적었지만 이제는 대부분 지원하고 있다. 아직까지도 SPM을 지원하지 않는 라이브러리라면, 이제는 더이상 업데이트가 되지 않는 라이브러리라고 봐도 무방할 것이다. 빌드시 Cocoa pods이 copy 개념이라면 SPM은 Link 개념이기 때문에 속도면에서 훨씬 유리하다.

장점

1. 애플이 지원한다. 👍

2. 스위프트 언어에 built-in 되어 있어 별다른 설치가 필요 없다, (Swift 3)

3. 스위프트 언어에 built-in 되어 있기 때문에 Xocde Project 파일이 꼭 필요한 것이 아니므로 리눅스에서도 사용할 수 있다.

4. Package.swift 파일 이외에 수행할 설정이 없다.

5. Xcode GUI 환경에서 관리가 가능하다 (11.0 이상)

단점

1. 지금 사용중인 라이브러리가 지원되는지 확인해야 한다.

2. Cocoa Pods에서 잘 돌아가고 있었는데 바꾸자고 설득을 해야한다.

 

직접 빌드속도 측정을 한 글이 있어서 가져왔다. 변경을 추진하면서 참조하기 좋은 토대가 될 수 있겠다.

https://xodhks0113.blogspot.com/2021/03/spm-01-swift-package-manager.html

 

[SPM] 01. Swift Package Manager 둘러보기

iOS 개발 및 일상에 대한 블로그 입니다.

xodhks0113.blogspot.com

빌드에서 약 40 ~ 60초의 시간이 단축된다고 하면, 적은것도 같지만 빌드는 프로젝트를 진행하며 계속해서 진행할 수 밖에 없기 때문에 조금이나마 도움이 되지 않을까 싶다. 무엇보다 클론 하고 터미널 열어서 Pod Install 입력하기가 귀찮은것도 무시할수 없는 사실이다.

 

현재 회사의 프로젝트는 생각보다 서드파티 라이브러리를 많이 사용하지는 않아서 사용중인 라이브러리를 확인해보고 SPM으로 변경하는것을 조심스럽게 건의해봐야겠다.