Pod install
iOS 프로젝트에서 CocoaPods을 사용하지 않은 프로젝트를 보기 힘들정도로 대부분의 iOS 프로젝트가 CocoaPods를 사용한다.
프로젝트 다운받고 -> `Pod install` -> 앱 실행
너무나도 익숙한 Flow지만 막상 다른 명령어는 뭐가 있는지, Pod install
과 Pod update
의 차이를 정확하게 이해하고 사용하고 있지 않다.
이번 기회에 CocoaPods
을 정확히 이해하고 사용해보자.
CocoaPods 명령어
Pod install
pod install
가장 많이 사용하는 명령어.
새로운 pod
을 다운로드, 설치하기 위해 사용한다.
다운로드 받을 pod
을 결정하는 것은 Podfile.lock
또는 Podfile
이다.
- Podfile.lock 파일이 있다면, .lock 파일 내에 명시된 pod과 그 버전을 다운받는다.
- Podfile.lock 파일이 없다면,
Podfile
에서 pod과~>
으로 명시된 버전을 다운받고 Podfile.lock에 버전을 명시한다
Podfile 에서 ~>
는 무엇을 의미할까?
~>
기호는 버전의 상한선(이보다 높을 수 없음) 을 의미한다. 버전은 메이저.마이너.패치
로 구분한다.
~> 0.1.2
버전 0.1.2 ~ 0.2 (0.2 이상 포함되지 않음)~> 0.1'
버전 0.1 (1.0 이상 포함하지 않음)
->
말고도 다른 연산자도 있다
> 0.1
0.1보다 큰 모든 버전>= 0.1
버전 0.1 이상< 0.1
0.1보다 낮은 모든 버전<= 0.1
버전 0.1 및 그 이하 버전
Podfile
에 명시된 pod
를 다운받고 Podfile.lock
에 다운받은 버전을 명시한다.
Podfile.lock 은 왜 필요할까?Podfile.lock
에 설치된 pod의 버전을 명시함으로써, pod이 업데이트 되면서 기존 앱이 동작되지 않는 문제를 해결하기 위해 Podfile.lock
에 기존 pod의 버전을 lock함으로써, 다른사람이 프로젝트를 clone 받아 pod install
했을때 유효한 pod 버전을 다운받기 위함이다! 버전픽스!
Pod Update
Podfile.lock
파일이 있는 한, Pod install
명령어를 사용하면 .lock 파일에 명시된 pod 버전에서 벗어날 수 없다. 시간이 흘러 pod 이 업데이트 되고, 업데이트 된 기능을 내 프로젝트에 적용해야 할 때, 내 프로젝트가 갖고있는 pod 을 업데이트 할 때 Pod update
를 사용한다.
Pod update {팟 이름} 을 실행하면
- Podfile.lock에 있는 버전은 무시하고 CocoaPods 원격 레포지토리에 있는 Pod 의 최신 버전을 다운받는다.
단! Podfile 에서 ~>, >= 등으로 제한을 걸어두었다면, 이 버전 제한 내의 최신버전이 적용될 것이다
- Podfile.lock에 새로운 pod 버전을 명시한다
Pod update을 실행하면
Podfile 에 있는 모든 Pod들을 대상으로 update 과정을 거친다
Podfile.lock 의 버전관리 (git commit에 포함해야 하나?)
해야한다
뭔가 확장자가 .gitignore에 포함되어야 할 느낌이지만! Podfile.lock은 Pod 파일들의 버전을 픽스시켜주는 역할을 한다.
다른사람에게 프로젝트를 공유할 때, 동일한 라이브러리 환경을 제공하기 위해 필수로 필요하며, 따라서 Git 으로 함께 버전관리를 해야한다.