CocoaPods VS SPM

mincheol
4 min readFeb 1, 2023

--

CocoaPods와 Swift Package Manager(SPM)는 두 가지 다른 라이브러리 관리 툴로, 각각 장단점이 있습니다.

CocoaPods

CocoaPods를 사용하는 것이 편리할 수 있는 경우는 프로젝트가 iOS, macOS, watchOS, tvOS를 지원하는 경우입니다. 이러한 플랫폼에서는 CocoaPods를 이용하여 프레임워크와 라이브러리를 관리할 수 있어, 편리하게 개발을 진행할 수 있습니다.

CocoaPods는 프로젝트에 의존성을 설정하기 위해 Podfile을 이용하며, Podfile에 의존성을 설정하면 자동으로 필요한 라이브러리를 다운로드하여 프로젝트에 추가해주기 때문에 개발자는 수동으로 다운로드하고 추가하는 과정을 거치지 않아도 됩니다.

또한 CocoaPods는 일반적인 라이브러리와 프레임워크를 관리할 수 있기 때문에, 프로젝트에서 사용하는 라이브러리를 통합적으로 관리할 수 있어 편리합니다.

장점

  • 의존성 관리

CocoaPods를 이용하면 프로젝트에서 사용하는 라이브러리를 통합적으로 관리할 수 있어 편리하다. 라이브러리의 의존성을 자동으로 관리해주기 때문에, 개발자는 수동으로 다운로드하고 추가하는 과정을 거치지 않아도 된다.

  • 쉬운 설치

Podfile에 의존성을 설정하면 자동으로 필요한 라이브러리를 다운로드하여 프로젝트에 추가해주기 때문에 CocoaPods를 이용하면 라이브러리를 쉽게 설치할 수 있다.

  • 업데이트 관리

Podfile을 수정하여 업데이트를 진행하면, CocoaPods가 자동으로 필요한 라이브러리를 업데이트 해줌으로써 개발자는 수동으로 라이브러리를 업데이트 할 필요가 없다.

단점

  • 의존성 관리

CocoaPods는 여러 라이브러리를 사용할 경우 의존성 관리를 어렵게 만들 수 있다. 특히, 라이브러리 간에 충돌이 발생할 경우 복잡한 의존성 관리를 해야 할 수 있다.

  • 빌드 속도

프로젝트에 많은 라이브러리를 추가할 경우 빌드 속도가 느려질 수 있다.

  • 용량

CocoaPods를 이용해서 다운로드한 라이브러리는 프로젝트에 포함되며, 이로 인해 프로젝트의 용량이 커질 수 있다. 라이브러리를 사용하지 않는 파일이나 코드는 프로젝트에서 제거할 수 없기 때문에 프로젝트의 용량이 커질 수 있다. 이러한 용량 문제는 프로젝트가 커질 수록 더욱 큰 문제가 될 수 있다.

  • 저장소 의존성

CocoaPods는 외부 저장소에서 라이브러리를 가져오는데, 이로 인해 외부 저장소의 이용 여부에 따라 라이브러리를 다운로드하지 못할 수 있다. 이로 인해 프로젝트를 진행하는데 있어서 불편함이 생길 수 있다.

SPM (Swift Package Manager)

Swift Package Manager (SPM)는 애플 플랫폼에서 사용되는 Swift 기반의 소프트웨어 패키지를 관리할 수 있는 툴입니다.

장점

  • 공식적인 지원

SPM은 애플에서 공식적으로 지원하는 툴이기 때문에, 애플 플랫폼에서만 사용할 수 있는 라이브러리나 프레임워크를 사용할 수 있다.

  • 속도

SPM은 빌드 속도가 빠르다. 빌드 시에 의존성을 체크하는 과정이 없기 때문에 빌드 속도가 빠르다.

  • 용량

SPM을 이용해서 설치한 라이브러리는 프로젝트에 포함되지 않기 때문에 프로젝트 용량을 줄일 수 있다.

  • 의존성 관리

SPM은 라이브러리 의존성을 자동으로 관리해주며, 의존성 충돌을 방지할 수 있다.

  • 소스코드 관리

SPM은 라이브러리의 소스코드를 관리할 수 있다. SPM을 이용하면 라이브러리를 소스코드를 포함해서 관리할 수 있기 때문에, 소스코드를 수정하여 사용하거나, 라이브러리를 직접 빌드할 수 있다.

단점

  • 라이브러리 지원 제한

SPM은 애플 플랫폼에서만 사용할 수 있는 라이브러리나 프레임워크를 지원하며, 다른 플랫폼에서 사용하는 라이브러리나 프레임워크는 지원하지 않는다.

  • 라이브러리 선택 제한

Package.swift 파일을 제공하지 않는 라이브러리의 경우 사용이 불가능하다.

  • 라이브러리 버전 관리 제한

SPM은 라이브러리의 버전을 자동으로 관리하지 않으며, 개발자가 직접 라이브러리의 버전을 관리해야 한다.

CocoaPods, SPM 빌드속도

  • CocoaPods는 빌드 시에 의존성을 체크하는 과정이 있기 때문에 빌드 속도가 느리지만, 의존성 관리를 자동으로 해주므로 개발자는 의존성 관리를 수동으로 할 필요가 없다. 또한 CocoaPods는 다양한 라이브러리를 선택하여 사용할 수 있다.
  • Swift Package Manager(SPM)는 애플 플랫폼에서 사용하는 라이브러리 관리 툴로, 빌드 시에 의존성을 체크하는 과정이 없어 빌드 속도가 빠르다. 하지만 의존성 관리를 수동으로 해야 하며, 의존성 충돌 방지를 위해서는 개발자가 직접 관리해야 한다.

CocoaPods 보다 SPM 빌드속도가 느려질 수 있는 이유

Dependency Resolution (프로젝트에 필요한 Depedency 를 확인하는 프로세스)

  • SPM: 소스로부터 모든 종속성의 전체 빌드를 수행
  • CocoaPods: 미리 빌드 된 바이너리를 캐시한다

→ 복잡한 종속성 그래프의 경우 빌드 시간이 길어질 수 있습니다.

→ 모든 종속성의 전체 빌드를 수행하기 때문에 길어질 수 있습니다.

--

--