프로젝트를 진행하며 의존성 관리 도구로 상황에 따라 CocoaPods, SPM을 번갈아 사용해 왔습니다.
iOS의 의존성 관리 도구에는 Carthage도 있는데, 각각의 차이를 정확히 몰라 이번 기회에 정리해보았습니다.
참고 문서에선
프로젝트 진행 시, 사용한 API를 배포에 포함시켜야 할까?
,
사용한 API가 완벽하다고 신뢰할 수 있나?
라는 질문을 던지고 있습니다.
모듈을 직접 포함시켜 배포하면, 모듈에 있을 버그의 가능성 + 달라지는 버전에 대응하지 못한 상태로 배포하게 됩니다.
의존성 관리 도구는 위와 같은 문제와 더불어, 보다 원활한 협업을 진행하기 위해 사용됩니다.
우리가 사용하는 모듈(외부 라이브러리)을 일괄적으로 관리해 주죠.
여기에 사용한 라이브러리가 업데이트되어 배포되었을 땐, 개발자가 매번 업데이트 여부를 찾아 볼 필요없이 관리 툴을 통해 의존성 관리 도구로 바뀐게 있나 확인만 하면됩니다.
위에서 언급한 것과 같이, iOS의 의존성 관리 도구는 크게 3가지가 있습니다.
CocoaPods, Carthage, Swift Package Manager(SPM) 로 적힌 순서대로 나왔습니다.
장점 | 단점 |
---|---|
설치와 사용이 간편하다. | 프로젝트 빌드시 Podfile의 모든 라이브러리가 같이 빌드되어, 다른 도구보다 빌드 시간이 오래 걸린다. |
Xcode 프로젝트 설정을 자동으로 해준다. | |
지원하고 있는 라이브러리가 많고, Cocoapods 사이트에서 쉽게 검색해 찾아볼 수 있다. |
라이브러리명.framework
파일을 만들어서, 프로젝트에 연결 시켜 사용합니다.장점 | 단점 |
---|---|
빌드가 빠르다. | 지원하는 라이브러리가 적다.(사용성 ↓) |
기존 .xcodeproj 확장자로 개발을 진행할 수 있다. | Carthage는 직접적으로 Xcode의 설정이나 프로젝트의 않아, 프로젝트의 모든 구성은 사용자에게 있다.(수동으로 설정해야함) |
pod install
이라는 부가 작업을 하지 않아도 됩니다.장점 | 단점 |
---|---|
Swift용 공식 패키지 관리 도구로, Apple에서 직접 관리한다. | 커멘드라인 사용법을 실행에 옮길 수 없다. |
별 다른 설치 없이, 누구나 쉽게 어떤 의존성이 애플리케이션에 있는지 알 수 있다. | CocoaPods에 비해, 지원하지 않는 라이브러리가 많다. |
Dynamic, Static 라이브러리를 모두 지원 |
안녕하세요! 의존성 관리 도구 spm과 pod 차이점이 궁금했는데 잘 정리해주셔서 감사합니다!
혹시 iOS 라이브러리 제작해보신 적 있으신가요?