안녕하세요.
이번에는 Library를 private pod으로 배포하는 방법에 대해 알아볼게요.
우선 Private Pod을 배포하기 위해서는 2가지 repository(저장소)가 필요합니다.
- Pod Repo
- Spec Repo
Pod Repo는 배포할 Library 프로젝트 저장소를 의미합니다.
Spec Repo는 Library를 배포하기 위한 podspec이 들어가 있는 저장소를 의미합니다.
Public Pod 배포할 때는 Spec Repo라는 걸 따로 안 만들었는데, Private Pod 배포할 때는 왜 필요할까요??
Public Pod을 배포하는 경우라면, pod trunk push 명령어를 사용해서 podspec을 CocoaPods/Specs 저장소에 제출하고,
(CocoaPods/Specs가 Spec Repo라고 보시면 됩니다.)
CocoaPods/Specs 저장소에 등록된 podspec을 가지고 사용자가 pod 설치를 하는 것입니다.
Private Pod의 경우는 어떨까요.
Private Pod이기 때문에 podspec을 모든 사람들이 보는 Cocoapods/Specs 저장소에 올릴 수 없으니, 별도의 저장소를 개인이 관리해줘야 합니다. 그래서 Spec Repo가 필요하다는 것이에요.
사용자가 Private Pod을 사용할 때는 Cocoapods/Specs 저장소에 podspec이 없으니, Podfile에 아래처럼 podspec이 어디 있는지 명시해줘야 합니다.
source 'SPEC_REPO'
개념은 요 정도로 이해를 했구요.. 만약 틀린 부분이 있으면 알려주세요ㅠㅠ
우선 Library 만드는 법부터 해서 배포하는 것까지 직접 해볼게요.
(PLPrivateSDK라는 모듈을 만들고 배포해볼게요!)
## 1. Pod Repo 만들기
저는 PLPrivateSDK라는 모듈을 만들 거예요.
Library가 저장될 위치로 가서(저는 Desktop에서 할 거예요.) 터미널에다가 아래 명령어를 입력해주세요.
pod lib create [Library 이름]
ex) pod lib create PLPrivateSDK
여러 가지 옵션이 있는데, 이번 시간은 Private Pod 배포하는 방법에 대해서 알아보는 시간이니 가장 간단하게 설정하고 넘어갈게요.
Library가 저장될 빈 repository를 만들어줄게요. (ex. https://github.com/phillip5094/PLPrivateSDK.git)
Library 디렉토리로 돌아와서 podspec을 수정해주고,
생성된 Library를 Pod Repo에 푸시해주고 태그도 함께 생성해줄게요.
git add .
git commit -m "first commit"
git branch -M main
git remote add origin [Pod Repo URL]
git push -u origin main
git tag 1.0.0
git push origin 1.0.0
아래 명령어로 podspec을 검증했을 때 문제가 없어야 합니다!!
pod spec lint [Library 이름].podspec --verbose --allow-warnings
ex) pod spec lint PLPrivateSDK.podspec --verbose --allow-warnings
## 2. Spec Repo 생성
podspec이 저장될 빈 repository를 하나 만들어주고 clone 받아올게요. (ex. https://github.com/phillip5094/Specs.git)
터미널에서 아래 명령어를 입력합니다.
pod repo add [Spec Repo 이름] [Spec Repo URL]
ex) pod repo add Specs https://github.com/phillip5094/Specs.git
아래 주소에 잘 들어갔는지 확인해주세요.
cd ~/.cocoapods/repo/[Spec Repo 이름]
ex) cd ~/.cocoapods/repo/Specs
## 3. Spec Repo에 podspec 등록
이제 podspec을 Spec Repo에 푸시해줘야 합니다.
다시 Library 디렉토리로 돌아와서 아래 명령어를 입력해주세요.
pod repo push [Spec Repo 이름] [Library 이름].podspec --verbose --allow-warnings
ex) pod repo push Specs PLPrivateSDK.podspec --verbose --allow-warnings
아래 주소에 잘 들어갔는지 확인해주세요.
cd ~/.cocoapods/repo/[Spec Repo 이름]
ex) cd ~/.cocoapods/repo/Specs
아래와 같은 구조로 private repo의 podspec이 등록되니 참고해주세요.
.
├── [Spec Repo 이름]
└── [Library 이름]
└── [버전]
└── [Library 이름].podspec
ex)
.
├── Specs
└── PLPrivateSDK
└── 1.0.0
└── PLPrivateSDK.podspec
└── 1.1.0
└── PLPrivateSDK.podspec
...
## 4. Private Pod 사용하기
배포는 모두 끝났습니다.
앞으로는 Podfile에 아래처럼 source 옵션을 넣어서 podspec 위치를 선언하고 사용해주시면 됩니다.
platform :ios, '12.0'
source 'https://github.com/phillip5094/Specs.git' ✅
target 'MSampleApp' do
use_frameworks!
pod 'PLPrivateSDK' ✅
end
👍
## 5. 다른 PC에서 Private Pod 사용하려면?
다른 PC에서 사용하는 방법도 동일해요.
아래 명령어를 입력해서 Spec Repo를 clone 받고
pod repo add [Spec Repo 이름] [Spec Repo URL]
ex) pod repo add Specs https://github.com/phillip5094/Specs.git
Podfile에 source 옵션을 넣어서 사용하면 됩니다.
source 'https://github.com/phillip5094/Specs.git'
platform :ios, '12.0'
target 'MySampleApp' do
use_frameworks!
pod 'PLPrivateSDK', '1.0.0'
end
만일 Library를 업데이트해야 한다면, Library 배포하는 분은 아래 명령어로 podspec을 Spec Repo에 등록해주셔야 하고,
pod repo push [Spec Repo 명] [Library 명].podspec --verbose --allow-warnings
ex) pod repo push Specs PLPrivateSDK.podspec --verbose --allow-warnings
사용하는 분은 아래 명령어로 최신 모듈을 clone 받고 사용하시면 됩니다.
pod repo update
pod update
## 참고
- https://guides.cocoapods.org/making/private-cocoapods.html
- https://zeddios.tistory.com/701
- https://chc3484.tistory.com/92
이번 글은 여기서 마무리.
'iOS' 카테고리의 다른 글
NSString, String 비교 방법 (Objective-C, Swift) (0) | 2022.08.14 |
---|---|
Apple Common Scheme List (0) | 2022.08.04 |
SwiftUI <-> UIKit 이벤트 전달 방법 (0) | 2022.05.21 |
Logger, OSLogPrivacy (0) | 2022.05.02 |
[오픈소스] Inject (0) | 2022.04.12 |