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} 실행

예제

"bundle exec"과 함께 사용했을 때와 안 했을 때의 차이

CocoaPods 관련 명령어(pod install, pod update)에서 bundle exec을 사용하는 이유는 팀원 간 동일한 CocoaPods 버전을 보장하기 위함이다.

1. "bundle exec"을 붙였을 때와 안 붙였을 때의 핵심 차이

명령어
동작 방식
사용하는 버전 기준
Podfile.lock 사용 여부
팀원 간 일관성 유지

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 installpod update로컬 CocoaPods 버전에 따라 다르게 동작할 가능성이 크다.

  • 가장 안전한 방법

    • pod을 설치할 때: bundle exec pod install

    • pod을 업데이트할 때: bundle exec pod update


3. pod outdated

  • Podfile.lock에 기록된 버전보다 새로운 버전이 존재하는 pod을 확인

  • 업데이트 가능한 pod 리스트를 출력

예제


4. pod repo update

  • CocoaPods 저장소에 있는 podspec 파일을 최신 상태로 업데이트

  • 특정 pod이 제대로 설치되지 않을 때 해결 방법으로 사용

예제

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 installpod update는 로컬 저장소(~/.cocoapods/repos)의 podspec을 참고하지만, 이 정보가 오래되었을 경우 pod repo update로 최신 원격 저장소와 동기화해야 함.


6. podspec이란?

  • podspec(Pod Specification)은 CocoaPods에서 사용하는 설정 파일로, 특정 라이브러리(Pod)에 대한 메타데이터를 포함

  • pod의 이름, 버전, 소스 코드 저장소, 종속성 등을 정의함

  • .podspec 파일은 CocoaPods 저장소에 저장되며, pod install 또는 pod update 시 참조됨

podspec 예시

  • 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 예시

  • CHECKSUMPodfile.lock의 유일성을 보증하는 해시값

  • Podfile.lock이 변경되면 CHECKSUM 값도 변경됨


8. Podfile.lock을 커밋해야 하는 이유

  • 팀원 간 동일한 pod 버전을 유지하기 위해 Podfile.lock을 반드시 공유해야 함

  • Podfile 수정 후 pod install을 실행하여 의존성을 일관되게 유지

  • 만약 버전 불일치 문제가 발생하면 다음 명령어로 해결 가능

해결 방법

이렇듯 CocoaPods을 활용하여 안정적으로 iOS 프로젝트의 의존성 관리

Last updated