목차

티스토리 뷰

728x90
반응형

 

안녕하세요🐾
비공개 라이브러리를 만들어 배포해야 하는 요구가 있어 프로젝트의 소스코드는 공개하지 않고 외부의 사용자에게 CocoaPod을 통해 배포 할 수 있는 방법이 없을까 알아보았고, 그 과정을 정리하였습니다.
이미 잘 정리된 글들이 많지만 제가 알아보기 쉽게 다시 또 정리하는 건 안비밀 😎

 


1. 개념 이해

Public Pod

Private Pod

  • Pod Repository(Private)
  • Spec Repository - 별도의 Repository 필요

 

Private Pod를 배포할건데 누구나 프로젝트의 소스코드에 접근 가능한 Public Repository로 관리하지 않듯이,

먼저 Pod Repository는 배포하려는 라이브러리의 컨셉과 동일하게 생성합니다.

 

다음으로 Spec Repository{프로젝트명}.podspec 파일을 저장하는 Repository입니다.

podspec 파일은 해당 라이브러리에 대한 세부 명세서로서 라이브러리 이름, 프로젝트 소스 위치, 버전 등에 대한 중요 정보를 담고 있으며 CocoaPods는 이 podspec 파일로 인해 실질적인 라이브러리 배포 및 설치가 이루어 집니다.

 

 

따라서 Public Pod인 경우 CocoaPods/Specs 저장소에 podspec 파일을 제출하게되면, 사용자는 이 저장소에 등록된 podspec을 이용하며 pod 설치를 진행하게 됩니다.

 

반대로 Private Pod인 경우엔 podspecs 파일을 누구나 접근 할 수 있는 CocoaPods/Sepcs에 등록할 수 없으니 개인이 별도의 저장소를 만들어 관리해야 하고, Podfile에 Spec Repository의 위치를 아래처럼 별도 명시해야 Private Pod를 설치 할 수 있습니다.

...
# platform :ios, '9.0'
source 'SPEC_REPOSITORY'
...

 


 

2. Private Pod 저장소 설정

 

2.1 Pod Repository

본격적으로 Private Pod를 만들어 보겠습니다.

먼저 배포할 라이브러리 디렉토리에서 터미널로 아래 명령어를 입력합니다.

pod lib create [라이브러리명]
// ex: pod lib create AssumKit

 

명령어 입력 후 라이브러리 설정은 아래와 같이 입력하였습니다.

 

 

Enter를 입력하고 정상적으로 실행되면 프로젝트가 생성되어 열립니다.

라이브러리 기능에 대한 실 구현은 Development Pods 폴더 내에서 이뤄집니다.

미리 생성되어 있는 ReplaceMe.Swift 클래스를 삭제하고 임의 클래스 하나를 만들어보았습니다.

 

 

이제 깃허브에 이 프로젝트가 저장될 Private Repository를 생성합니다.

 

 

라이브러리 프로젝트 디렉토리에 podspec 파일을 찾아 아래와 같이 작성하였습니다.

Pod::Spec.new do |s|
  s.name             = 'AssumKit'
  s.version          = '1.0.0'
  s.summary          = 'A short description of AssumKit.'
  s.description      = 'AssumKit Private Pod Repository'
  s.homepage         = 'https://github.com/CiddiPumpkin/AssumKit'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'Assum' => '이메일 입력' }
  s.source           = { :git => 'https://github.com/CiddiPumpkin/AssumKit.git', :tag => s.version.to_s }
  s.ios.deployment_target = '10.0'
  s.source_files = 'AssumKit/Classes/**/*'
end

 

 

이제 라이브러리 프로젝트 디렉토리에서 터미널로 Pod Repository에 푸시하고 태그를 설정하겠습니다.

여기서 추후 라이브러리를 업데이트할때에도 podspec의 version과 태그를 일치시켜주어야 하므로 신경써주어야 합니다.

git add .
git commit -m "pod first commit"
git branch -M main
git remote add origin [POD_REPO_URL.git] 
// ex) git remote add origin https://github.com/CiddiPumpkin/AssumKit.git
git push -u origin main
// tag와 podspec의 버전을 일치
git tag 1.0.0
git push origin 1.0.0

 

 

 푸시가 완료되면 깃허브 Repository를 통해 확인 할 수 있습니다.

 

 

2.2 Spec Repository

Pod Repository를 만들었습니다 🎉

이번엔 깃허브를 통해 podspec을 관리할 Public Repository를 생성해 주세요.

Public으로 만드시는 것 잊지마세요. 밀줄 쫙

 

 

생성이 다되었다면 터미널을 열고 해당 저장소를 받아올 디렉토리에서 git clone을 입력합니다.

git clone [REPO_URL]
// ex) git clone https://github.com/CiddiPumpkin/AssumKitSpec.git

 

 

그 후 git clone으로 받아온 해당 디렉토리에서 터미널로 아래의 명령어를 수행합니다.

pod repo add [SPEC_REPO] [SPEC_REPO_URL]
// ex) pod repo add AssumKitSpec https://github.com/CiddiPumpkin/AssumKitSpec.git

 


 

3. Private Pod 배포

 

Pod Repository와 Spec Repository가 모두 준비되었습니다!

배포에 앞서 터미널을 실행하여 라이브러리 프로젝트 디렉토리에 있는 podspec을 검증해보도록 합시다.

pod spec lint [POD_REPO_NAME].podspec --allow-warnings
// ex) pod spec lint AssumKit.podspec --allow-warnings

passed validation이 뜬다면 이제 본격적인 배포를 준비합니다.

 

 

Spec Repository에서 podsepc 파일을 관리하려면 먼저 라이브러리 프로젝트에 있는 podspec 파일을 Spec Repository쪽으로 푸시해주어야겠죠?  라이브러리 프로젝트 디렉토리에서 아래 명령어를 입력합니다.

pod repo push [SPEC_REPO_NAME] [POD_REPO_NAME].podspec --allow-warnings
// ex) pod repo push AssumKitSpec AssumKit.podspec --allow-warnings

 

 

푸시가 완료되면 아래의 메세지가 나타납니다.

🎉 라이브러리 사용을 위한 모든 준비가 끝났습니다. 🎉

 


 

4. Private Pod 사용

배포한 Private Pod를 사용할 프로젝트의 Podfile을 열어 source와 pod를 입력해준 뒤 사용합니다.

# Uncomment the next line to define a global platform for your project
# platform :ios, '10.0'
source 'https://github.com/CiddiPumpkin/AssumKitSpec.git'

target 'AssumTest' do
  use_frameworks!
  
  # Private Pod
  pod 'AssumKit'
  
end

 

pod install이 완료되었다면 성공입니다!

 

추후 코드 업데이트 후 다시 재배포는 아래와 같은 순서를 따릅니다.

cd [SDK-DIRECTORY]
git add .
git commit -m "pod update"
git push -u origin main
// tag와 podspec의 버전을 일치
git tag 1.0.0
git push origin 1.0.0
// pod repo push WellnessSDKSpec WellnessSDK.podspec --allow-warnings

 


 

5. 참조

- https://phillip5094.tistory.com/85

- https://zeddios.tistory.com/701

- https://guides.cocoapods.org/making/private-cocoapods.html

 

 

 

반응형
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함