본문 바로가기

Tips

CocoaPods vs Carthage vs Swift Package Manager

코코아팟(CocoaPods)

장점

  • 사용하기 쉽다.
  • Dynamic, Static 라이브러리를 모두 지원한다. (1.5.0 버전 이상)
  • 의존성의 의존성까지 자동으로 관리해준다.
  • 누구나 쉽게 어떤 의존성이 애플리케이션에 있는지 알 수 있다.
  • pod outdated 명령어로 쉽게 새로운 버전이 있는지 체크할 수 있다.
  • 거의 대부분의 라이브러리가 코코아팟을 지원한다. 👍

단점

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

카르타고 (Carthage)

장점

  • Dynamic, Static 라이브러리를 모두 지원한다. (0.30.0 버전 이상)
  • 의존성의 의존성까지 자동으로 관리해준다.
  • 누구나 쉽게 어떤 의존성이 애플리케이션에 있는지 알 수 있다.
  • carthage outdated 명령어로 쉽게 새로운 버전이 있는지 체크할 수 있다.
  • carthage update 를 실행할때만 한 번 프레임워크를 빌드하므로 코코아팟에 비해 프로젝트 빌드 속도가 빠르다. 👍
  • 처음에 프레임워크를 추가하는 것 외에 프로젝트 설정이 바뀌지 않는다.

단점

  • 의존성이 추가될 때마다 해줘야 하는 번거로운 작업이 있다.
  • 사용자나 인기가 많은 라이브러리가 아니라면 카르타고를 지원하지 않을 수도 있다.

스위프트 패키지 매니저 (Swift Package Manager)

장점

  • 애플이 지원한다. 👍
  • Dynamic, Static 라이브러리를 모두 지원한다. (4.0 버전 이상)
  • 의존성의 의존성까지 자동으로 관리해준다.
  • 누구나 쉽게 어떤 의존성이 애플리케이션에 있는지 알 수 있다.
  • 스위프트 언어에 built-in 되어있어 별다른 설치가 필요없다. (Swift 3 이상)
  • 스위프트 언어에 built-in 되었기 때문에 Xcode Project 파일이 꼭 필요한 것이 아니므로 리눅스에서도 사용할 수 있다.
  • Package.swift 파일 이외에 수행할 설정이 없다.
  • Xcode의 GUI 환경에서 관리가 가능하다 (11.0 버전 이상)

단점

  • 아직은 지원하지 않는 라이브러리가 많다.
  • 현 시점, 해결되지 않은 버그 이슈가 270건이 있다. (참조: SPM 이슈 목록)

결론

  각 도구들의 장단점을 살펴보았습니다. IT에도 대세와 흐름이 있듯이 모든 도구들도 공통적으로 가진 장점도 존재하는 것을 알 수 있습니다. 최고의 장점을 가진 것은 애플이 지원하는 스위프트 패키지 매니저가 아닐까 싶습니다. 현재는 각종 한계(커스텀 빌드 설정 등)와 버그들로 실무에서 쓰기에는 어려움이 있다고 판단되었지만 점차 개선해나가는 것을 보면 상용화될 날도 머지 않았다고 생각합니다.

 

참조

Swift Package Manager vs CocoaPods vs Carthage for All Platforms
Pods, Carthage, and SPM: Swift’s Package Management Dilemma