CocoaPods 기본 명령어 정리
1. pod install
프로젝트에서 처음 CocoaPods을 설정할 때 사용
Podfile
에서 의존성을 추가, 수정, 삭제한 후 실행새로운 pod을 다운로드하고
Podfile.lock
에 버전을 기록기존에 설치된 pod은
Podfile.lock
에 기록된 버전 그대로 설치Podfile.lock
에 없는 새로운 pod은Podfile
의 버전 조건에 맞춰 다운로드
예제
pod install
2. 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 install
pod을 업데이트할 때:
bundle exec pod update
3. pod outdated
Podfile.lock
에 기록된 버전보다 새로운 버전이 존재하는 pod을 확인업데이트 가능한 pod 리스트를 출력
예제
pod outdated
4. pod repo update
CocoaPods 저장소에 있는
podspec
파일을 최신 상태로 업데이트특정 pod이 제대로 설치되지 않을 때 해결 방법으로 사용
예제
pod repo update
pod 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/repos
pod 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"
end
spec.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: 567f647c0698abc31d48952ce58077we758abse2
CHECKSUM
은Podfile.lock
의 유일성을 보증하는 해시값Podfile.lock
이 변경되면 CHECKSUM 값도 변경됨
8. Podfile.lock을 커밋해야 하는 이유
팀원 간 동일한 pod 버전을 유지하기 위해
Podfile.lock
을 반드시 공유해야 함Podfile
수정 후pod install
을 실행하여 의존성을 일관되게 유지만약 버전 불일치 문제가 발생하면 다음 명령어로 해결 가능
해결 방법
rm -rf Pods && pod install
이렇듯 CocoaPods
을 활용하여 안정적으로 iOS 프로젝트의 의존성 관리
Last updated