CocoaPods 기본 명령어 정리
1. pod install
프로젝트에서 처음 CocoaPods을 설정할 때 사용
Podfile에서 의존성을 추가, 수정, 삭제한 후 실행새로운 pod을 다운로드하고
Podfile.lock에 버전을 기록기존에 설치된 pod은
Podfile.lock에 기록된 버전 그대로 설치Podfile.lock에 없는 새로운 pod은Podfile의 버전 조건에 맞춰 다운로드
예제
pod install2. pod update
특정 pod을 최신 버전으로 업데이트할 때 사용
Podfile.lock을 무시하고Podfile의 버전 조건에 맞는 최신 버전 설치모든 pod을 업데이트하려면
pod update만 실행특정 pod만 업데이트하려면
pod update {특정 pod}실행
예제
pod update Alamofire"bundle exec"과 함께 사용했을 때와 안 했을 때의 차이
CocoaPods 관련 명령어(pod install, pod update)에서
bundle exec을 사용하는 이유는 팀원 간 동일한 CocoaPods 버전을 보장하기 위함이다.
1. "bundle exec"을 붙였을 때와 안 붙였을 때의 핵심 차이
pod install
Podfile.lock 기반으로 로컬 CocoaPods로 설치
로컬에 설치된 CocoaPods 버전
✅ Podfile.lock 참고
❌ CocoaPods 버전 차이 가능
bundle exec pod install
Podfile.lock 기반으로 Gemfile.lock에 명시된 CocoaPods 버전으로 설치
Gemfile.lock의 CocoaPods 버전
✅ Podfile.lock 참고
✅ 동일한 버전 유지
pod update
최신 버전의 Pod을 설치하며 Podfile.lock 업데이트
로컬에 설치된 CocoaPods 버전
❌ Podfile.lock 무시
❌ CocoaPods 버전 차이 가능
bundle exec pod update
최신 버전의 Pod을 설치하며 Podfile.lock 업데이트
Gemfile.lock의 CocoaPods 버전
❌ Podfile.lock 무시
✅ 동일한 버전 유지
정리
팀원 간 CocoaPods 버전을 맞추고 안정적인 환경을 유지하려면
bundle exec을 붙여서 사용해야 한다.pod install과pod update는 로컬 CocoaPods 버전에 따라 다르게 동작할 가능성이 크다.가장 안전한 방법은
pod을 설치할 때:
bundle exec pod installpod을 업데이트할 때:
bundle exec pod update
3. pod outdated
Podfile.lock에 기록된 버전보다 새로운 버전이 존재하는 pod을 확인업데이트 가능한 pod 리스트를 출력
예제
pod outdated4. pod repo update
CocoaPods 저장소에 있는
podspec파일을 최신 상태로 업데이트특정 pod이 제대로 설치되지 않을 때 해결 방법으로 사용
예제
pod repo updatepod repo update vs pod update
명령어
기능
pod repo update
CocoaPods 저장소의 podspec 정보를 최신 상태로 업데이트
pod update
Podfile.lock을 무시하고 지정된 pod을 최신 버전으로 업데이트
pod repo update는 CocoaPods 저장소의 정보를 최신 상태로 유지하는 것이고,pod update는 실제 프로젝트의 pod 버전을 최신으로 업데이트하는 차이가 있음.
5. CocoaPods 저장소 구조
CocoaPods 저장소는 로컬과 원격 두 곳에 존재함.
1. 로컬 저장소
위치:
~/.cocoapods/repospod install또는pod update실행 시, 로컬 저장소의 podspec 정보를 참고하여 pod을 설치pod repo update를 실행하면 로컬 저장소가 최신 원격 정보로 업데이트됨
2. 원격 저장소
모든 pod의 podspec 파일이 저장되어 있으며, 최신 버전이 릴리스될 때마다 업데이트됨
즉, pod install과 pod update는 로컬 저장소(~/.cocoapods/repos)의 podspec을 참고하지만, 이 정보가 오래되었을 경우 pod repo update로 최신 원격 저장소와 동기화해야 함.
6. podspec이란?
podspec(Pod Specification)은 CocoaPods에서 사용하는 설정 파일로, 특정 라이브러리(Pod)에 대한 메타데이터를 포함pod의 이름, 버전, 소스 코드 저장소, 종속성 등을 정의함
.podspec파일은 CocoaPods 저장소에 저장되며,pod install또는pod update시 참조됨
podspec 예시
Pod::Spec.new do |spec|
spec.name = "Alamofire"
spec.version = "5.4.4"
spec.summary = "Elegant HTTP networking in Swift"
spec.homepage = "https://github.com/Alamofire/Alamofire"
spec.source = { :git => "https://github.com/Alamofire/Alamofire.git", :tag => spec.version.to_s }
spec.ios.deployment_target = "10.0"
endspec.name: pod 이름spec.version: pod 버전spec.source: pod의 소스 코드가 저장된 Git 저장소spec.ios.deployment_target: 최소 iOS 지원 버전
podspec과 pod update의 관계
pod update를 실행하면 CocoaPods은podspec파일을 참고하여 최신 버전을 찾음podspec에 정의된source에서 최신 태그를 확인하고,Podfile의 버전 조건에 맞는 최신 버전으로 업데이트pod repo update를 실행하지 않으면, 로컬 저장소의 오래된podspec을 사용하여 최신 버전을 찾지 못할 수도 있음
7. Podfile.lock이란?
Podfile.lock은 설치된 pod의 버전 정보를 기록하여 유지하는 역할을 함pod 버전 변경 시 CHECKSUM 값도 변경됨
Podfile.lock 예시
PODS:
- Alamofire (4.8.2)
- Crashlytics (3.13.2)
...
PODFILE CHECKSUM: 567f647c0698abc31d48952ce58077we758abse2CHECKSUM은Podfile.lock의 유일성을 보증하는 해시값Podfile.lock이 변경되면 CHECKSUM 값도 변경됨
8. Podfile.lock을 커밋해야 하는 이유
팀원 간 동일한 pod 버전을 유지하기 위해
Podfile.lock을 반드시 공유해야 함Podfile수정 후pod install을 실행하여 의존성을 일관되게 유지만약 버전 불일치 문제가 발생하면 다음 명령어로 해결 가능
해결 방법
rm -rf Pods && pod install이렇듯 CocoaPods을 활용하여 안정적으로 iOS 프로젝트의 의존성 관리
Last updated