[펌][Cocoapods] pod install? pod update? 제대로 알고 쓰자
많은 사람들이 pod install 을 코코아팟 프로젝트를 처음 세팅할 때 딱 한 번 쓰고 pod update 는 그 이후에 사용된다고 생각합니다. 그러나 전혀 그렇지 않습니다! 😝
이번 포스팅에서 pod install 과 pod update 를 정확히 알아보도록 하겠습니다.
pod install
pod을 프로젝트에 세팅하기 위하여 맨 처음에 사용됩니다. 하지만 Podfile의 pod을 추가, 수정, 삭제할 때에도 사용됩니다.
pod install 명령어를 실행하면 새로운 pod을 다운받고 설치합니다. 그리고 각 pod 마다 설치된 버전을 Podfile.lock 에 기록해 놓습니다. Podfile.lock은 설치된 pod들의 버전을 계속 추적하여 기록해놓고 유지시키는 역할을 합니다.
pod install 을 실행하면,
Podfile.lock에 리스트된 팟들에 대해선 지정된 버전만 다운받습니다. 새로운 버전이 존재하는지 체크하지 않는 것이죠!
Podfile.lock에 리스트되지 않은 팟들은 Podfile에 명시된 버전 조건으로 검색하여 다운로드 받습니다. (ex. pod 'MyPod', '~>1.2')
Podfile.lock 예시
PODS: - Alamofire (4.8.2) - Crashlytics (3.13.2) . . . PODFILE CHECKSUM: 567f647c0698abc31d48952ce58077we758abse2
Podfile.lock에는 CHECKSUM이 부여됩니다. Podfile.lock의 유일성을 보증하는 해쉬값인 셈이죠. 만약 버전에 변경이 생기면 CHECKSUM 또한 변하게 됩니다.
pod update
pod update {팟이름} 을 실행시키면, 코코아팟은 해당 팟의 업데이트된 버전이 있는지 검색합니다. Podfile.lock을 참조하지 않죠. 이 명령어는 팟을 최신 버전으로 업데이트 시켜주는 것입니다. (단, Podfile의 버전 조건과 일치해야 합니다.) 단순하게 pod update 만 실행시키면 코코아팟은 모든 팟에 대해 가능한 최신 버전으로 업데이트를 실행합니다.
pod outdated
pod outdated 를 실행하면, 코코아팟은 Podfile.lock에 리스트된 것보다 새로운 버전을 가진 모든 팟을 나열합니다. 이 팟들에 대해 pod update {팟이름} 을 실행한다면 업데이트가 될 것이라는 것을 의미합니다. (역시나 Podfile의 버전 조건과 부합하는 한!)
pod repo update
/Users/{사용자이름}/.cocoapods/repos 에 있는 모든 podspec 파일을 업데이트 합니다. podspec 파일에는 해당 pod 의 주소 등 중요한 정보들이 담겨있습니다.
spec.source = { :git => 'https://github.com/Alamofire/Alamofire.git', :tag => 'v3.1.1' }
~/.cocoapods/repos 에는 모든 pod에 대해 가능한 버전들의 podspec 파일들이 모여있습니다. pod repo update 를 실행하게 되면 최신 podspec 파일들로 업데이트되게 되는 것입니다. 추가한 라이브러리에 대한 podspec 이 업데이트되지 않아 오류가 날 경우 이 명령어를 통하여 해결할 수 있습니다.
Podfile.lock을 커밋하세요!
동료와 같이 협업하고 있다면! 꼭 Podfile.lock을 공유해야 합니다. pod 버전을 모두가 동일하게 쓰도록 유지시키는 역할을 하는 것이죠. 그리고 Podfile이 수정될 일이 생긴다면 pod install 명령어를 통해 의존성을 관리하면 됩니다. 만약 동료들과 같은 CHECKSUM을 얻는데에 실패했다면 간단하게 rm -rf Pods && pod install 을 실행하면 됩니다. 😎
참조
https://guides.cocoapods.org/using/pod-install-vs-update.html
[출처] onelife2live.tistory.com/30
'iOS,OSX' 카테고리의 다른 글
[링크][iOS] Fastlane iOS 를 통한 TestFlight 자동빌드 & 자동배포 (0) | 2021.10.12 |
---|---|
[펌] [Xcode]Provisioning Profiles 삭제하기 (0) | 2021.01.19 |
[링크] [Scriptable] 국내 코로나 확진자현황 위젯 (0) | 2020.12.01 |
ITMS-90683: Missing Purpose String in Info.plist (0) | 2020.04.28 |
[펌] 설정-일반-"프로파일" 메뉴가 없네요 (0) | 2019.11.12 |