[IOS] CocoaPods과 Carthage과 Swift Package Manager

asd

개발을 할 때, 내가 사용하고 싶은 기능을 모두 만들어서 쓰기에는 시간이 모자랍니다.
그러기에 다른 라이브러리를 가져다 쓰지만, 업데이트 될 때마다 일일이 최신버젼으로 업데이트 한다는 것은 정말 손이 많이갑니다.
1~2개라면 모르지만 10~20개의 라이브러리들을 사용하게 된다면 귀찮은게 문제가 아니라 물리적으로 불가능 해집니다.
내 프로젝트에 사용할 프로젝트를 연결해주고 명령어 한번으로 해당 프로젝트의 버전을 최신 버전으로 업데이트 해주는 기능이 필요합니다.
이럴 때 필요한게 패키지 매니져이다. 비슷한 기능으로 자바에는 Maven,Gradle Node.js에는 npm 등이 있습니다.

Swift 프로젝트에는 크게 CocoaPods ,Carthage 그리고 SPM이 있다. 어떤 차이가 있는지 알아봅시다.

링크 : https://let-us-go-2020-summer.vercel.app

CocoaPods

CocoaPods은 가장 오래된 스위프트 패키지 매니져 중 하나입니다.
필요한 오픈소스 라이브러리들을 검색해 내 프로젝트에서 사용하는데 도움을 준다. https://cocoapods.org/ 에서 pod검색이 가능합니다.
install 명령어 하나로 fetch 후 dependencies들을 build 한 후 프로젝트에 추가해준다. 정말 편합니다.

설치
$ sudo gem install cocoapods
시작
$ pod init
Podfile 내부에 pod 'ObjectMapper', '~> 3.4’ 추가
명시한 라이브러리를 프로젝트에 설치
$ pod install
.xcworkspace 생성

podfile이란 CocoaPods을 통해 라이브러리(pod)들을 관리할 수 있는 파일입니다.
어떤 라이브러리가 내 앱에 종속되는지 버전은 몇인지. 업데이트 등에 대한 정보를 작성합니다.
CocoaPods은 많은 오픈소스 라이브러리들을 제공한다. 라이브러리의 중복을 제거 및 버젼관리를 해줍니다.
팀프로젝트시 동일한 버젼의 라이브러리 운영이 가능하도록 해줍니다.

Carthage

다음은 Carthage이다.
Carthage는 빌드 시 라이브러리를 프로젝트와 통합하지 않고 관리합니다.
CocoaPods이 라이브러리와 같이 빌드를 해버린다면, Carthage는 동적 라이브러리로 관리할 수 있게 해줍니다.
그러므로 보다 빠른 빌드 속도를 제공해줍니다.
하지만 초기 설정방법이 CocoaPods에 비해 복잡하다. 새로운 워크스페이스를 만들지 않고 framework로 의존성을 추가하면 필요한 순간에 가져다 사용합니다.
CocoaPods에 보다 적은 라이브러리들이 지원하지만, 유명한 라이브러리들은 대부분 지원합니다.

Swift Package Manager

SPM(Swift Package Manager) 은 셋 중 가장 최근에 Swift3에서 소개되었습니다.
Apple의 공식 패키지 관리자입니다. 개발자 친화적인 방식으로 Swift 코드를 공유가 가능합니다.
리눅스에서도 사용이 가능합니다.
Carthage를 지원하지 않는 라이브러리의 빌드가 가능합니다. 하지만 아직 사용하기에 힘든점이 있습니다.
많은 라이브러리들이 아직 지원하지 않고 있기 때문입니다.

앞으로 세개 모두 사용해서 프로젝트를 집접 만들어 보고 장단점을 추가하겠습니다.


donaricano-btn

댓글

댓글 쓰기

이 블로그의 인기 게시물

[IOS] AppDelegate는 뭐하는 녀석이지?

[git] Github 이슈 라벨(issue labels)

[git] git의 upstream과 origin 헷갈리는 사람 손!