๐Ÿ“ฆ [iOS] SPM(Swift Package Manager)๋ฅผ ํ™œ์šฉํ•œ iOS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ ๊ฐ€์ด๋“œ

์ด์„œยท2023๋…„ 9์›” 19์ผ
1

๐Ÿ“ฑ iOS ํŠธ๋ž™

๋ชฉ๋ก ๋ณด๊ธฐ
2/2
post-thumbnail
post-custom-banner

๊ฐœ์š”

์‚ก์‚ก ์•ˆ๋…•ํ•˜์„ธ์š” ์ด์„œ์ž…๋‹ˆ๋‹ค๐Ÿฅณ, ์˜ค๋Š˜์€ ์Šค์œ„ํ”„ํŠธ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €(SPM)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ คํ•ด์š”.

SPM์€ Swift ์–ธ์–ด๋กœ ๊ฐœ๋ฐœ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ํ”„๋กœ์ ํŠธ์—์„œ ์ฝ”๋“œ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ํ•ต์‹ฌ ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜๋กœ Apple์˜ ๊ณต์‹ ๋„๊ตฌ์—์š”. ๋”ฐ๋ผ์„œ Cocoapods ํ˜น์€ Carthage์™€ ๊ฐ™์€ 3rd party tool์ด ์•„๋‹ˆ๋ฉฐ, Xcode11 ๋ถ€ํ„ฐ ๋‚ด์žฅ ๊ธฐ๋Šฅ์œผ๋กœ ์ œ๊ณต๋˜์–ด์ง€๊ณ  ์žˆ๋Š” 1st party์—์š”.

SPM์€ Swift ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ์†Œ์Šค ์ฝ”๋“œ์˜ ๋ชจ๋“ˆํ™”, ์ข…์†์„ฑ ๊ด€๋ฆฌ, ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ์ž๋™ํ™”, ํ…Œ์ŠคํŠธ ์ง€์› ๋ฐ ํŒจํ‚ค์ง€ ๊ณต์œ ๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ๋ฅผ ์ œ๊ณตํ•ด์š”.

ํŠน์ง•

  1. ์˜์กด์„ฑ(์ข…์†์„ฑ) ๊ด€๋ฆฌ: SPM์„ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ์™ธ๋ถ€ ํŒจํ‚ค์ง€ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์š”. ์ด๋กœ์จ ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๊ณ  ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์–ด์š”.
  2. ์ž๋™ ๋นŒ๋“œ: ํŒจํ‚ค์ง€ ๋ฐ ์ข…์†์„ฑ์˜ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋Š” SPM์— ์˜ํ•ด ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์š”. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๋ณต์žกํ•œ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ์„ ํšŒํ”ผํ•˜๊ณ  ๋” ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์–ด์š”.
  3. ํ”Œ๋žซํผ ํ˜ธํ™˜์„ฑ: SPM์€ macOS, iOS, watchOS, tvOS ๋ฐ Linux์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ”Œ๋žซํผ์— ๋”ฐ๋ฅธ ์ข…์†์„ฑ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์–ด์š”.
  4. ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ: SPM์€ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ ์ฝ”๋“œ์˜ ํ’ˆ์งˆ์„ ์œ ์ง€ํ•˜๊ณ  ๋ฒ„๊ทธ๋ฅผ ์‚ฌ์ „์— ์ฐพ๋Š” ๋ฐ ๋„์›€์„ ์ค˜์š”.
  5. Git ๋ฐ ์›๊ฒฉ ์ €์žฅ์†Œ ์ง€์›: ํŒจํ‚ค์ง€๋ฅผ Git ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋‚˜ ๋‹ค๋ฅธ ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์–ด์š”. ์ด๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์˜ ํ˜‘์—…๊ณผ ํŒจํ‚ค์ง€ ๊ณต์œ ๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์š”.
  6. ๊ฐ„๋‹จํ•œ ๋ช…๋ น์–ด: SPM์€ ๋ช…๋ น ์ค„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ๋˜๋ฉฐ, ์ดˆ๊ธฐ ์„ค์ • ๋ฐ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ฐ„ํŽธํ•œ ๋ช…๋ น์–ด๋ฅผ ์ œ๊ณตํ•ด์š”.

ํŒจํ‚ค์ง€(Package) ์ถ”๊ฐ€

  1. Xcode ํ”„๋กœ์ ํŠธ๋ฅผ ์—ด์–ด .xcodeproj ํŒŒ์ผ์„ ์—ด์–ด์ฃผ์„ธ์š”.

  2. ์™ผ์ชฝ ํŒจ๋„์˜ PROJECT๋ฅผ ์„ ํƒํ•˜๊ณ  Package Dependencies ํƒญ์„ ์„ ํƒํ•ด์š”.

  3. ์ขŒ์ธก ํ•˜๋‹จ์— โž•ย ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด์š”.

  4. ์šฐ์ธก ์ƒ๋‹จ์˜ ๊ฒ€์ƒ‰์ฐฝ์—์„œ ์›ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ด์š”. ์ €ํฌ๋Š” Alamofire ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฃผ์ž…ํ•ด๋ณผ๊ฒŒ์š”. https://github.com/Alamofire/Alamofire.git ์„ ๋ณต์‚ฌํ•˜์—ฌ ๊ฒ€์ƒ‰์ฐฝ์— ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.

    Dependency Rule

    • Up to Next Major Version: ์ฃผ์–ด์ง„ ์ฃผ์š” ๋ฒ„์ „๋ถ€ํ„ฐ ๋‹ค์Œ ์ฃผ์š” ๋ฒ„์ „๊นŒ์ง€์˜ ๋ชจ๋“  ๋ฒ„์ „์„ ํ—ˆ์šฉํ•ด์š”.
    • Up to Next Minor Version: ์ฃผ์–ด์ง„ ๋งˆ์ด๋„ˆ ๋ฒ„์ „๋ถ€ํ„ฐ ๋‹ค์Œ ๋งˆ์ด๋„ˆ ๋ฒ„์ „๊นŒ์ง€ ํ—ˆ์šฉํ•ด์š”.
    • Range of Versions: ์ฃผ์–ด์ง„ ๋ฒ”์œ„ ๋‚ด์˜ ๋ชจ๋“  ๋ฒ„์ „์„ ํ—ˆ์šฉํ•ด์š”.
    • Exact Version: ์ •ํ™•ํ•œ ๋ฒ„์ „๋งŒ์„ ํ—ˆ์šฉํ•ด์š”.
  5. Alamofire๊ฐ€ ์„ ํƒ๋œ ์ƒํƒœ์—์„œ ์šฐ์ธก ํ•˜๋‹จ์˜ Add Package ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ถ”๊ฐ€ํ•  ํŒจํ‚ค์ง€ ๋ชฉ๋ก์ด ํ‘œ์ถœ๋ผ์š”. ๋‹ค์‹œ Add Package ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์š”.

  6. ์ขŒ์ธก ํ”„๋กœ์ ํŠธ ๋„ค๋น„๊ฒŒ์ดํ„ฐ์˜ Package Dependencies์— Alamofire 5.8.0 ๋ฒ„์ „์ด ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, .xcodeproj์˜ Package Dependencies์—์„œ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

๋!

profile
๐ŸŽ๏ธ๐Ÿ’จ Beep Beep
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€