본문 바로가기

iOS/Xcode

Xcode) Dependency Management (1/3) - CocoaPods(코코아팟) 심화편

 

 

 

안녕하세요 :) 소들입니당!

 이전 포스팅에서 코코아팟 처음 설치하고,

라이브러리 추가하고, pod install 하는 것까지 했져?

 

 

 

 

따라서 위와 같이 새로운 파일들이 여러 개 생성되는 것까지 봤어요 :)

또 해당 라이브러리를 사용하려면, .xcworkspace라는 프로젝트로 열어야 했져

이번 포스팅에선 그 중에서도

 

Podfile

Pods
Podfile.lock

 

이란 파일들에 대해서 알아볼 거예요 :b

Podfile은 이전 포스팅에서 봤는데 왜 또 보냐구요? 내마음 하하하 

장난이고, 이전 포스팅엔 없는 라이브러리 버전에 대해서 추가 설명할 게 있어서 그럽니당 :)

 

그 외에도 코코아팟 명령어에 대해서도 더 자세하게 알아봅시다!!!!

모든 포스팅은 편의 말투로 합니다~!!

 

 

 

 

1. Podfile

 

Podifle은 저번에 우리가 작성했던 것이잖음?? 더 자세히 보자 :)

코코아팟은 우리가 원하는 라이브러리를 자동으로 설치해준다 했음!

 

그럼 우리가 설치하고픈 라이브러리가 무엇인지, 이를 코코아팟한테 알려줘야 하잖음??

따라서 코코아팟에서 이를 알려주기 위해 작성하는 것이 바로 Podfile

앞으로 라이브러리를 ""이라고 부르겠음!

 

나 이런 이런 팟의 이런 버전 필요해! 

 

 

 

 

하고 이렇게 명시해주는 것이, Podfile임!!!

 

자, 근데 여기서 팟 이름 뒤에 '~> 5.2' 같은 꼬리가 붙는 것을 볼 수 있는데,

이것은 바로 팟의 버전을 지정하는 것임!! 이것에 대해 간단히 알아보자!

 

 

 

1-1. Podfile 지원 버전 정의

 

> 0.1 0.1 보다 더 높은 버전
>= 0.1 0.1 버전 이상
< 0.1 0.1 보다 더 낮은 버전
<= 0.1 0.1 버전 이하
~> 0.1.2 0.1.2 버전 이상 ~ 0.2 버전 미만
~> 0.1 0.1 버전 이상 ~ 1.0 버전 미만
~> 0 0 버전 이상 ~ 1.0 버전 미만

 

 

그로하다

이런 식으로 설치할 팟의 버전에 대해 지정할 수 있던 거시다

 

 

 

 

2. Podfile.lock

 

그래! Podfile은 코코아팟이 설치할 팟의 이름과 버전 등이 들어 있는 파일이란 건 알았어!

그럼 Podfile.lock은 뭐하는 파일일까

 

코코아팟은 Podfile에 명시된 팟을 다운받고 나면,

Podfile.lock에 다운받은 버전을 명시한다

 

우리가 Podfile에 받고싶은 팟과 버전을 모두 명시했잖음??  👀

그러면 이제 코코아팟이 해당 팟들을 모두 다운받고 설치할텐데,

이때 어떤 팟의 어떤 버전을 받았는지를 기록하는 것이 바로 Podfile.lock 파일임

 

따라서, 열어보면

 

 

어떤 팟의 어떤 버전을 다운받았는지 명시해두고 있음 :)

 

 

 

2-1. Podfile.lock은 왜 필요할까?

 

Podfile.lock은 현재 설치되어 있는 Pod의 버전을 명시하는 것으로,

다른 사람이 프로젝트를 Clone 받아서 Pod Install을 했을 때, 팀 간 동일한 팟과 버전을 공유할 수 있음

 

그럼 이제 Pod Isntall이 뭔지 궁금해지겠지....

후후.. 조금만... 기다리센 .. Pods만 다루고 해주지.. 후후 

일단 프로젝트에서 사용하는 팟의 버전을 명시하니까, 협업 시 동일한 버전을 공유할 수 있구나!

정도로 알고 가자 :)

 

 

 

 

3. Pods

 

다운받고 설치한 팟(소스코드 등)이 실제 저장되는 공간

 

 

 

 

이렇게!!!!

따라서, 실제 팟이 설치되는 공간으로 용량이 크기 때문에,

협업할 땐 당연히 이 Pods를 제외하고, Podfile과 Podfile.lock만 공유하는 것임!!

 

그럼 이제 새로운 사람이 들어와서, 해당 프로젝트를 clone 받고

pod install이나 pod update란 명령어를 통해 Pods를 설치하는 것 :)

 

그러면 pod install / pod update란 명령어가 무엇인지, 어떤 차이가 있는지,

또 Podfile과 Podfile.lock을 왜 함께 공유해야 하는지에 대해 함께 이해를 해보자

 

 

 

 

4. pod install / pod update / pod outdated 명령어

 

아, 참고로 명령어니까 당연히 터미널 켜고 해당 프로젝트 위치에서 입력하는 검돠

 

 

 

4-1. pod install

 

 

pod install

 

 

pod을 프로젝트에 세팅하기 위해 맨 처음에 사용되는 명령어지만 (이전 포스팅에서 봤듯이!!),

Podfile의 Pod을 수정 / 추가 / 삭제 했을 때도 사용함

 

pod install을 실행하면, 코코아팟은 뭐를 보고 다운로드 받을지 결정한다? Podfile!!

근데!!!!! 이 pod install이란 명령어를 쓸 경우 두 가지로 나뉨

 

① Podfile.lock 파일이 있다

➡️ Podfile.lock 파일 내에 명시된 Pod과 그 버전을 다운로드 한다

 

② Podfile.lock 파일이 없다 

➡️ Podfile에서 Pod과 명시된 버전으로 다운받고, 이를 Podfile.lock에 기록한다 

 

따라서, pod install을 할 경우, 만약 Podfile이 존재하면

해당 팟의 최신 버전이 존재하더라도, 무조건 Podfile.lock에 적힌 팟과 버전으로 받음!

(최신 버전이 있는지 자체를 확인하지 않음!!)

 

따라서 만약 협업을 하는 입장이라면,

서로 버전을 모두 맞춰야 하기 때문에 이때는 당연히 pod install 명령어를 쓰는 게 맞음!

 

이렇기 때문에, 협업을 할 때엔 

⭐️ Podfile은 물론, Podfile.lock 파일도 반드시 같이 커밋(공유)를 해야하는 것!!! ⭐️ 

그래야 pod install을 통해 모두 같은 팟의 버전을 공유할 수 있으니까 :)

 

그럼 pod update는 무엇일까?

 

 

 

4-2. pod update

 

 

pod update 팟이름

 

 

이렇게 pod update 뒤에 팟 이름을 써주면,

코코아팟은 해당 팟의 업데이트된 버전이 있는지 찾아서 최신 버전으로 업데이트 시켜줌!

따라서 update의 경우 Podfile.lock은 아예 신경 ㄴㄴ하고,

Podfile에 명시한 버전 조건과는 일치하게 최신 버전을 다운로드 함!

(해당 팟의 버전 명시가 ~>0.1이고, 1.0이 최신 버전일 경우, 1.0보다 이전 버전을 다운)

 

 

pod update

 

 

특정 팟 이름을 지정하지 않고 위 명령어처럼 입력하면,

Pod 파일에 있는 모든 팟을 최신 버전으로 다운로드 함!

(당연히 이때도 Podfile의 버전조건은 맞춤)

 

 

.

.

 

 

 

4-3.  pod outdated

 

 

pod outdated

 

 

마지막으로, 갑툭튀한 pod outdated라는 명령어도 보겠음!! 이 명령어는 

현재 Podfile.lock에 명시된 버전보다 새로운 버전이 있는 팟들을 모두 나열해줌

 

 

 

 

이런 식으로 !!! :)

따라서 이렇게 해당 팟의 최신 버전을 확인할 수 있음!!

 

 

 

 

5. 코코아팟의 장/단점

 

5-1. 장점

 

👍 외부 프레임워크를 쉽게 추가 / 제거 할 수 있다 
👍 누구나 어플에 어떤 의존성이 있는지 알 수 있다
👍 대부분의 라이브러리가 코코아팟을 지원한다    

 

 

5-2. 단점

 

👎기존 Xcode 작업 공간과 통합하기 어렵다(.xcworkspace로 작업해야함)
👎 라이브러리를 다운받고 설치하는 pod install / pod update에 시간이 오래 걸린다
👎 프로젝트를 빌드할 때마다 Pods에 있는 모든 팟이 같이 빌드되어 프로젝트 빌드 시간이 느리다

 

 

 

 

 

 

 

.

.

.

 

오늘은 코코아팟에 대한 모든~~ 개념 정리 끝! :)

코코아팟이 까보면 참 별 거 없는데, 모를 땐 왜그렇게 어렵고 멀게만 느껴지던지ㅠㅠ

제 포스팅이 누군가에게 꼭 도움이 되었으면 좋겠습니다!

 

잘못된 내용, 궁금증은 언제든 댓글 주세요! 

 



Calendar
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
최근 댓글
Visits
Today
Yesterday