์ด์ „ ๊ธ€์—์„œ Scheme์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด์ง€ ์ž˜ ๋ชจ๋ฅธ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.

Scheme ์•Œ์•„๋ณด๊ธฐ

ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ฃผ๊ณ , Product โ†’ Scheme โ†’ Edit Scheme ๋“ค์–ด๊ฐ€์ž.

์™ผ์ชฝ์— ๊ธฐ๋ณธ Scheme๋“ค์ด ์„ค์ •๋˜์–ด ์žˆ๋‹ค. ๋นŒ๋“œ, ๋Ÿฐ(์•ฑ ์‹คํ–‰), ํ…Œ์ŠคํŠธ, ํ”„๋กœํŒŒ์ผ, ๋ถ„์„, ์•„์นด์ด๋ธŒ ๋“ฑ์ด ์žˆ๋‹ค. ์ด ์ค‘์—์„œ ์šฐ๋ฆฌ๊ฐ€ ๋ณดํ†ต ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ run์ธ๋ฐ, ๋“ค์–ด๊ฐ€๋ณด๋ฉด build configuration์— debug, release ๋‘๊ฐœ์˜ configuration์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์ „ ๊ธ€์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ๋‘๊ฐœ๊ฐ€ ์žˆ๋‹ค๊ณ  ์„ค๋ช…ํ–ˆ์—ˆ๋‹ค.

์™ผ์ชฝ์„ ๋ณด๋‹ˆ ๊ฐ๊ฐ์˜ Scheme ๋ณ„๋กœ ์‚ฌ์šฉํ•˜๋Š” configuration์ด ๋‹ค๋ฅธ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

  • Build: ์„ ํƒ๊ฐ€๋Šฅ
    • ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์†Œ์Šค ์ฝ”๋“œ๋“ค์„ ์ปดํŒŒ์ผํ•จ
  • Run: Debug
    • ์„ ํƒ๋œ Device ๋˜๋Š” Simulator์—์„œ Target์„ ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰
  • Test: Debug
    • ์„ ํƒํ•œ ํƒ€๊ฒŸ๊ณผ ๊ทธ Unit Test๋ฅผ ๋นŒ๋“œํ•จ
  • Profile: Release
    • ์„ ํƒ๋œ Device ๋˜๋Š” Simulator์—์„œ ์„ ํƒํ•œ Instruments ๋„๊ตฌ(Leaks, Allocations ๋“ฑ)์™€ ํ•จ๊ป˜ Target์„ ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰
  • Analyze: Debug
    • ์ •์  ๋ถ„์„๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ ํƒํ•œ Target์„ ๋นŒ๋“œํ•˜๊ณ  ์ฝ”๋“œ ์•ˆ์— ๋ฒ„๊ทธ ์žˆ๋Š”์ง€ ์•Œ๋ ค์คŒ
    • ์ •์  ๋ถ„์„๊ธฐ๋Š” ์†Œ์Šค์ฝ”๋“œ ์‹คํ–‰ ์—†์ด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ฆ‰, ์ฝ”๋“œ ๊ฒ€ํ† ์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค.
  • Archive: Release
    • AppStore์— ๊ฒŒ์‹œํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ .xcarchive๋ฅผ ์ƒ์„ฑํ•จ
    • .xcarchive๋Š” .ipa๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์‹œ์ž‘์ ์œผ๋กœ ํ™œ์šฉ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์ž„

Build Configuration ์ถ”๊ฐ€ํ•˜๊ธฐ

์ผ๋ฐ˜์ ์ธ ์ƒํ™ฉ์ด๋ผ๋ฉด ๋‘๊ฐ€์ง€ configuration์œผ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์‹ค์ „์€ ๋‹ค๋ฅด๋‹ค. ์‚ฌ๋‚ด ํ…Œ์ŠคํŠธ์šฉ, ๋ฌด๋ฃŒ ๋ฒ„์ „, ์œ ๋กœ ๋ฒ„์ „, ๋ฒ ํƒ€ ๋ฒ„์ „ ๋“ฑ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ Target์„ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž.

configuration์„ ๋ณต์‚ฌํ•œ ๋’ค์—,

์ด๋ฆ„์„ ๋ฐ”๊ฟ”์ค€๋‹ค. ์ผ๋‹จ ํŠน์ • ํšŒ์‚ฌ ๋‚ด ๋ฐฐํฌ๊ฐ€ ๋ชฉ์ ์ด๋ผ ๊ฐ€์ •ํ•˜๊ณ , Inhouse๋ผ ์ด๋ฆ„์ง€์—ˆ๋‹ค. ์ด์ œ ์ด Scheme์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค.

Target โ†’ ์™ผ์ชฝ ๋งˆ์šฐ์Šค ํด๋ฆญ โ†’ Manager Schemes ์„ ํƒ

+ ๋ฒ„ํŠผ ๋ˆ„๋ฅด๊ณ 

์ด๋ฆ„ ์„ค์ •ํ•œ ํ›„์—

์ง . ์ถ”๊ฐ€๋˜์—ˆ๋‹ค. ์ด์ œ ์ด Configuation์œผ๋กœ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค.

์‹ค์ œ๋กœ ์•„๊นŒ Configuration์„ ๋‹ค์‹œ ๋ˆ„๋ฅด๋ฉด, ์ƒˆ๋กœ์šด configuration์ด ์ƒ์„ฑ๋จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ.. ์ด์ƒํƒœ์—์„œ ์•ฑ์„ ๋นŒ๋“œํ•˜๋ฉด, 2๊ฐœ์˜ ์•ฑ์ด ์ƒ์„ฑ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž์ง€๋งŒ (test, test.inhouse) ํ•˜๋‚˜๋งŒ ์ƒ์„ฑ๋œ๋‹ค.

์ด์œ ๋Š” bundle identifier๊ฐ€ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

Bundle Identifier ๋ณ€๊ฒฝํ•˜๊ธฐ

๋‚ด๊ฐ€ ๋นŒ๋“œํ•˜๊ณ  ์‹ถ์€ ํƒ€๊ฒŸ์˜ Build Setting โ†’ + โ†’ Add User-Defined Setting ์„ ๋ˆ„๋ฅด์ž.

์ƒˆ๋กœ์šด ์„ธํŒ…์ด ๋งŒ๋“ค์–ด ์กŒ๊ณ , ์ด์ œ ์—ฌ๊ธฐ๋‹ค๊ฐ€ custom bundle identifier๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์ž.

์ด๋ฆ„์€ reverse domain์œผ๋กœ ์ง“๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋œ๋‹ค. ์ด์ œ info.plist์— ๊ฐ€์„œ ์ด ๋ณ€์ˆ˜๋กœ ์„ธํŒ…์„ ๋ณ€๊ฒฝํ•˜์ž.

์ƒˆ Row๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ ,

๋ณ€์ˆ˜๋กœ ๋ฐ”๊พธ์ž.

์ด์ œ ๊ฐ๊ฐ์˜ Configuration์— Edit Scheme์— ๋“ค์–ด๊ฐ€์„œ Run ํ–‰๋™์‹œ ์–ด๋–ค Configuration์„ ์„ค์ •ํ•  ๊ฒƒ์ธ์ง€ ์„ธํŒ…ํ•˜์ž.

์ด๋ ‡๊ฒŒ ํ•˜๊ณ  ๋นŒ๋“œํ•˜๋ฉด ์ƒˆ๋กœ์šด ๋‹ค๋ฅธ Configuration์„ ๊ฐ€์ง„ ๋‘๊ฐœ์˜ ์•ฑ์ด ๋‚˜์˜จ๋‹ค! ์ด๋ฆ„์ด ๊ฐ™์„ํ…๋ฐ, Bundle Name์„ ์•„๊นŒ์™€ ๊ฐ™์ด ์ ์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ์•ฑ ์ด๋ฆ„์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

220329 ๊ธฐ์ค€ ์•ˆ๋‚˜์˜ด.. ์™œ์ง€?

Reference