๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ iOS

[Pod/iOS] Pod ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ

by ํ‹ด๋”” 2023. 1. 29.
728x90
๋ฐ˜์‘ํ˜•

ํ„ฐ๋ฏธ๋„์—์„œ 

pod lib create [pod name]

https://guides.cocoapods.org/making/using-pod-lib-create

์œ„ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํ”Œ๋žซํผ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ๋‚˜์˜ด

์ง€๊ธˆ์€ ๋กœ์ปฌ์—์„œ ์ž‘์—…ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „์— ์ž‘์—…ํ•œ ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์ง€ ์•Š์€ํ•œ, ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค 

 

What platform do you want to use?? [ iOS / macOS ]
> iOS

์ด๋•Œ iOS ์„ ํƒ (๋งฅ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋ฉด macOS๋ฅผ ์„ ํƒํ•˜๋ฉด ๋จ)

 

What language do you want to use?? [ Swift / ObjC ]
 > Swift

ํŒŸ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•  ์–ธ์–ด ์„ ํƒ

Would you like to include a demo application with your library? [ Yes / No ]
 > Yes

๋ฐ๋ชจ์•ฑ์„ ํฌํ•จ ์‹œํ‚ฌ ๊ฒƒ์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฌป๋Š” ๊ฒƒ์œผ๋กœ Yes๋กœ ์„ค์ •ํ•˜๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด์„œ ๋ฐ๋ชจ์•ฑ์„ ์‹คํ–‰ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‚˜๋ด„

 

Which testing frameworks will you use? [ Quick / None ]
 > None

ํ…Œ์ŠคํŠธ์— ์‚ฌ์šฉํ•  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์œผ๋กœ Quick ํ˜น์€ ์ง€์ • ์•ˆํ•  ์ˆ˜ ์žˆ์Œ

 

Would you like to do view based testing? [ Yes / No ]
 > No

๋ทฐ ๋‹จ์œ„์˜ ํ…Œ์ŠคํŒ…์„ ํ•  ๊ฒƒ์ธ์ง€ ๋ฌป๋Š” ๊ฒƒ

 

What platform do you want to use?? [ iOS / macOS ]
 > iOS

What language do you want to use?? [ Swift / ObjC ]
 > Swift

Would you like to include a demo application with your library? [ Yes / No ]
 > Yes

Which testing frameworks will you use? [ Quick / None ]
 > None      

Would you like to do view based testing? [ Yes / No ]
 > No

์„ค์ •์ด ๋๋‚˜๋ฉด ์ž๋™์œผ๋กœ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๊ฐ€ Xcode๋กœ ์‹คํ–‰๋จ

 

 

์ด๋ฏธ ์ƒ์„ฑ๋œ ์ด๋ฆ„์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ๋งŒ๋“ค๋ ค๊ณ  ํ•˜๋Š” ๊ฒฝ์šฐ user ํŒŒ์ผ์— ๋“ค์–ด๊ฐ€๋ฉด pod name์œผ๋กœ ์ง€์ •ํ•œ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์ด ์ƒ์„ฑ๋จ -> ํ•ด๋‹น ํŒŒ์ผ ์‚ญ์ œ

 

Pods > Development Pods์—์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ

์—ฌ๊ธฐ์— ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋Š” ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ

 

 

๊นƒํ—ˆ๋ธŒ ์—ฐ๊ฒฐ

๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ƒ์„ฑํ•˜๊ธฐ ์ด๋•Œ ๊ธฐ์กด์— ์žˆ๋Š” ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ

public์œผ๋กœ ์ƒ์„ฑํ•ด์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋„ ํŒŸ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ

 

์ด์ œ ํ„ฐ๋ฏธ๋„์˜ cd ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋Š” ํŒŒ์ผ๋กœ ์ด๋™ํ•จ 

 

 

git init
git config user.name ""
git config user.email ""
git add README.md
git add .
git commit -m "first commit"
git tag -a 0.0.1 -m "Version 0.0.1"
git remote add origin https://github.com/[user name]/[your repository name].git
git push -u origin main

ํ•˜๋‚˜์˜ ๋งฅ์—์„œ ์—ฌ๋Ÿฌ ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๊ณ„์ •์„ config ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ง€์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ์Œ

push ์‹œ ๊นƒํ—ˆ๋ธŒ์˜ username๊ณผ access token ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ํ‘ธ์‹œ๊ฐ€ ์ด๋ฃจ์–ด์ง

ํƒœ๊ทธ๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ํ‘ธ์‹œ ํ• ๋•Œ ํƒœ๊ทธ ์ •๋ณด๋ฅผ ์ž‘์„ฑํ•ด ์ค˜์•ผ ํ•จ

 

projectName.podspec ์—์„œ dependency์™€ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์ž‡์Œ

s.version์˜ ๊ฐ’์„ ํƒœ๊ทธ์˜ ๊ฐ’๊ณผ ๋™์ผํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•จ

๋ณ€๊ฒฝ ํ›„ ๋ฆฌ๋ชจํŠธ์— ํ‘ธ์‹œํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ํ„ฐ๋ฏธ๋„์—์„œ

git add .
git commit -m "CNG version and tag"
git push

 

์•„๋ฌด ์ž‘์—…๋„ ์—†์ด ํ‘ธ์‹œ๋ฅผ ํ•˜๋‹ˆ ๋„ˆ๋ฌด ํ—ˆ์ˆ ํ•˜๋‹ค

 

๋ฆด๋ฆฌ์ฆˆ ์ •๋ณด ์ž‘์„ฑ

์˜ค๋ฅธ์ชฝ ๋„ค๋น„๊ฒŒ์ด์…˜์„ ๋ณด๋ฉด Releases๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ณณ์ด ์žˆ์Œ

Create a new release๋ฅผ ๋ˆŒ๋Ÿฌ์„œ ๋ฆด๋ฆฌ์ฆˆ ์ •๋ณด๋ฅผ ์ž‘์„ฑํ•œ๋‹ค

์ฒ˜์Œ์— ์ƒ๋‹จ์— ํƒœ๊ทธ ์„ ํƒ๋ž€์— ํƒœ๊ทธ ์ •๋ณด๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์ƒ์„ฑํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฒ„์ „์œผ๋กœ ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•ด ์คŒ
(์ด๊ฑฐ ์•ˆํ•ด ์ฃผ๋ฉด CocoaPods ๋ฐฐํฌ๊ฐ€ ์•ˆ๋œ๋‹ค... ใ… )

๊ทธ๋Ÿฌ๋ฉด ์ด๋ ‡๊ฒŒ create a new release ์ž‘์„ฑ๋ž€์— ์ด๋ ‡๊ฒŒ ํƒœ๊ทธ ์ •๋ณด๊ฐ€ ๋ณด์ธ๋‹ค

 

CocoaPods์— ํ‘ธ์‹œ

์ฒ˜์Œ CocoaPods์— ํ‘ธ์‹œํ•˜๋ ค๋ฉด ์ด๋ฉ”์ผ ๋“ฑ๋ก๊ณผ ์ธ์ฆ์ด ํ•„์š”ํ•จ

pod trunk push --allow-warnings

์ด์ œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๋ฃจํŠธํŒŒ์ผ์—์„œ ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค

์ด๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡๊ฐ€์ง€ ์—๋Ÿฌ(ํ˜น์€ ์ด์Šˆ) ๊ฐ€ ์žˆ๋‹ค. CocoaPods ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ตœ์ดˆ ๋ฐฐํฌ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋“ค์ด๋‹ค!

 

[!] Specify at least your email address.

    $ pod trunk register EMAIL [YOUR_NAME]

    Register a new account, or create a new session.

 

์ด๋ฉ”์ผ๊ณผ ์ด๋ฆ„ (๊นƒํ—ˆ๋ธŒ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ด๋ฉ”์ผ๊ณผ ์ด๋ฆ„์ž…๋ ฅํ•ด ์ฃผ์—‡์Œ) ์„ ์œ„ ๋ช…๋ น์–ด ํ˜•ํƒœ๋กœ ์ž…๋ ฅํ•˜๋ฉด

ํ•ด๋‹น ์ฃผ์†Œ๋กœ ์ธ์ฆ๊ฐ€๋Šฅํ•œ ๋ฉ”์ผ์„ ๋ณด๋‚ด์ค€๋‹ค

Please verify the session by clicking the link in the verification email that has been sent to

๋ฉ”์ผ ์ธ์ฆ ์—†์ด ์ง„ํ–‰ํ•˜๋ฉด ์œ„ ๋ฌธ๊ตฌ๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค

๋ฉ”์ผ๋กœ ๋ณด๋‚ด์ค€ url๋กœ ๋“ค์–ด๊ฐ€๋ฉด CocoaPods ํ™ˆํŽ˜์ด์ง€์—์„œ ํ•ด๋‹น ๋ฌธ๊ตฌ๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค

์ด์ œ ์ค€๋น„๊ฐ€ ๋ฌ๋‹ค

pod trunk push --allow-warnings

์œ„ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ํŒŸ ๋“ฑ๋ก์„ ๋งˆ๋ฌด๋ฆฌ ํ•œ๋‹ค

 

ํ˜น์‹œ ํ•˜๋‚˜์˜ ๋งฅ์—์„œ ์—ฌ๋Ÿฌ ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ ๊นƒํ—ˆ๋ธŒ ์ •๋ณด๊ฐ€ ๊ผฌ์ผ ์ˆ˜ ์žˆ๋‹ค

๊ทธ๋Ÿด ๊ฒฝ์šฐ podspec ์˜ ์ž๋™์œผ๋กœ ์ž…๋ ฅ๋œ ์ •๋ณด๋„ ๊ผฌ์ด๊ฒŒ ๋˜๋Š”๋ฐ, username์ด ๊ผฌ์ธ ๊ฒฝ์šฐ 

projectName.podspec์œผ๋กœ ๋“ค์–ด๊ฐ€์„œ

  s.homepage         = 'https://github.com//'
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { '' => '' }
  s.source           = { :git => 'https://github.com//.git', :tag => s.version.to_s }
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

์ด ๋ถ€๋ถ„์ด ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ •๋ณด๊ฐ€ ๋งž๋Š”์ง€ ํ™•์ธํ•œ๋‹ค

s.homepage์™€ s.author, s.source์˜ ์ •๋ณด๊ฐ€ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ •๋ณด์™€ ์ผ์น˜ํ•ด์•ผ ๋“ฑ๋ก ๊ฐ€๋Šฅํ•˜๋‹ค.

(๋“ฑ๋กํ•˜๊ธฐ ์ „์— ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์žˆ๋Š” podspec์˜ ์ •๋ณด๊ฐ€ ์ œ๋Œ€๋กœ ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ ํ•„์š”)

 

warning: Could not find remote branch 0.0.1 to clone.
fatal: Remote branch 0.0.1 not found in upstream origin

์œ„ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ ๊นƒํ—ˆ๋ธŒ์— ๋“ฑ๋กํ•œ ๋ฆด๋ฆฌ์ฆˆ ์ •๋ณด๊ฐ€ ์ •ํ™•ํ•œ์ง€ ํƒœ๊ทธ๊ฐ€ ์ƒ์„ฑ๋œ ๊ฒƒ์ด ๋งž๋Š”์ง€ ํ™•์ธํ•œ๋‹ค

 

 

์ฐธ๊ณ  ์‚ฌ์ดํŠธ ๋ฐ ๋„์„œ

https://medium.com/@jeantimex/create-your-own-cocoapods-library-da589d5cd270

https://betterprogramming.pub/how-to-create-a-public-cocoapods-library-23e9c8f773f8

https://stackoverflow.com/questions/37038659/issue-when-creating-my-first-cocoapod

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€