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

[Xcode/Swift] Configuration ๊ด€๋ฆฌํ•˜๊ธฐ

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

Intro

  • Dev -> QA -> Release์˜ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉฐ ๊ฐ ๋‹จ๊ณ„์—์„œ ์š”๊ตฌํ•˜๋Š” ๋นŒ๋“œ ์„ธํŒ…์ด๋‚˜ ์ƒ์ˆ˜์˜ ์ •์˜๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ
    • ex) URL host for Networking, Firebase info.plist etc..
  • Configuration์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ Configuration์— ํ•„์š”ํ•œ ๋นŒ๋“œ ์„ธํŒ…์„ ์ง€์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ์Œ 
  • Multiple targets์„ ํ†ตํ•ด์„œ๋„ ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์„ ๋ถ„๊ธฐ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ Target์€ MacOS, iOS ๋“ฑ์˜ ๊ธฐ๊ธฑ ํƒ€๊ฒŸ, ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜๋ฉด์„œ ์ผ๋ถ€ ๋กœ์ง์ด ๋‹ฌ๋ผ ๋‹ค๋ฅธ ์•ฑ์œผ๋กœ ๋ฐฐํฌ๋˜๋Š” ์•ฑ ๋“ฑ์—์„œ ์‚ฌ์šฉ
  • Configuation์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ์ผ์ข…์˜ ์ž‘์—… ํ™˜๊ฒฝ์„ ๋ณ€๊ฒฝํ•ด ์ฃผ๋Š” ๊ฒƒ
  • ํ•˜๋‚˜์˜ ์•ฑ์—์„œ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์œผ๋กœ ํ…Œ์ŠคํŠธ ํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•ด์•ผ ํ•  ๋•Œ ์œ ์šฉ 
  • ๋ฐฐํฌ์‹œ์—๋„ Configuration์„ ์„ ํƒํ•ด ๋ฐฐํฌ ํ•  ์ˆ˜ ์žˆ์Œ

Add Configuration

PROJECT > info ํƒญ > Configuration ์˜์—ญ์—์„œ + ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ Configuration ์ถ”๊ฐ€ ๊ฐ€๋Šฅ

 

ํ˜น์€ ์ƒ๋‹จ Editor > Add Configuration ์„ ์„ ํƒํ•ด์„œ ๋ณต์‚ฌํ•  Configuration์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Œ

 

Configuration์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ  ์—”ํ„ฐ๋ฅผ ๋ˆŒ๋Ÿฌ ์„ค์ • ์™„๋ฃŒ

 

Add Scheme

  • What is Scheme?
    • ๋นŒ๋“œํ•  ํƒ€๊ฒŸ๋“ค์„ ์ •์˜ (์ฆ‰ Configuration ์„ค์ • -> ์Šคํ‚ด ์ถ”๊ฐ€ -> ํ•ด๋‹น Configuration ๋นŒ๋“œ ํ•˜๊ณ  ์‹คํ–‰ ๊ฐ€๋Šฅ) ๋นŒ๋“œ์‹œ ์–ด๋Š Configuration์„ ์‚ฌ์šฉํ• ์ง€ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ
    • multiple targets๋„ Scheme์œผ๋กœ ๋“ฑ๋กํ•ด ์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ์Œ
    • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ง„๋‹จ ์‹คํ–‰ ๊ฐ€๋Šฅ
    • ๋ชจ๋“  ์ž‘์—…์— ๋Œ€ํ•œ ๋””๋ฒ„๊ทธ ํ˜น์€ ๋ฆด๋ฆฌ์ฆˆ ๋นŒ๋“œ ์ƒ์„ฑ

์ƒ๋‹จ์—์„œ new Scheme์„ ๋ˆŒ๋Ÿฌ ์Šคํ‚ด์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Œ. ์‚ฌ์ง„์—์„œ๋Š” Edit Scheme์ด ํ•˜์ด๋ผ์ดํŠธ ๋˜์–ด ์žˆ์ง€๋งŒ New Scheme์„ ๋ˆŒ๋Ÿฌ ์ถ”๊ฐ€ํ•ด ์ฃผ์–ด์•ผ ํ•จ

Scheme์˜ ์ด๋ฆ„์„ ์„ค์ •ํ•˜๊ณ  OK๋ฅผ ๋ˆŒ๋Ÿฌ ์ถ”๊ฐ€ ์™„๋ฃŒ

์ƒˆ๋กœ ์ถ”๊ฐ€ํ•œ Configuration์„ ์„ ํƒํ•˜๊ณ  Edit Scheme์„ ๋ˆŒ๋Ÿฌ์„œ ์„ค์ • ๋ณ€๊ฒฝํ•ด์•ผ ํ•จ

 

Run์—์„œ Build Configuration์„ ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•ด ์ค€ Configuration์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ํ•ด๋‹น Configuration ์œผ๋กœ ๋นŒ๋“œ ๋จ

Test, Archive ๋“ฑ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Configuration์„ ์ง€์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ์Œ. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์•„์นด์ด๋น™๋„ Release์—์„œ ์ƒˆ๋กœ์šด  Configuration์œผ๋กœ ๋ณ€๊ฒฝ

 

Custom Flags

Configuration์— ๋”ฐ๋ผ์„œ Xcode์˜ Build System์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด ์ค„ ์ˆ˜ ์žˆ์Œ

 

-D ๋ฅผ prefix๋กœ ์ง€์ •(์˜ˆ๋ฅผ ๋“ค์–ด #if TEST๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ -DTEST๋กœ ์ •์˜ ํ•จ)

 

        #if DDEV
        print("๋””๋ฒ„๊น… ์ค‘")
        #elseif DQA
        print("ํ์—์ด ์ค‘")
        #else
        print("๋ฐฐํฌ ์ค‘")
        #endif

์ฝ”๋“œ์—์„œ ์œ„์™€ ๊ฐ™์ด ์ „์ฒ˜๋ฆฌ๋ฌธ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

Photo by IลŸฤฑl Agc from Pexels: https://www.pexels.com/photo/grapefruit-slices-and-tea-16425093/

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€