Bundle

์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ(executble code) + ๋ฆฌ์†Œ์Šค (Resources)๋ฅผ ๊ฐ€์ง„ ๊ณ„์ธต

์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ์ด ๊ฐœ๋…์€ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๊ฐœ๋…์ด๋‹ค. ๊ฒฐ๊ตญ Package๋‚ด๋ถ€๋Š” Bundle๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ๋‹จ์ง€, ์–ด๋–ค ์‚ฌ๋žŒ์„ ์œ„ํ•ด์„œ์ธ๊ฐ€ (์ผ๋ฐ˜ ์‚ฌ์šฉ์ž, ๊ฐœ๋ฐœ์ž)์— ๋”ฐ๋ผ ํ•ด๋‹น ๋ณธ์งˆ์ด ๋‹ค๋ฅธ ๋‹จ์–ด๋กœ ๋ถˆ๋ฆฐ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. package๋ผ๋Š” ๋‹จ์–ด๋Š” ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ์‚ฌ์šฉ, finder๋ฅผ ์†์ด๊ธฐ ์œ„ํ•จ์ด๋ผ๋Š” ๋ชฉ์ ์„ฑ์„ ๊ฐ€์ง„ ๋‹จ์–ด์ด๊ณ , Bundle์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ๊ฐ์‹ธ๋Š” ๋‹จ์œ„๋กœ ๋ถˆ๋ฆฌ์šด๋‹ค.

๊ฐ€์žฅ ํ”ํ•œ ์˜ˆ๋กœ Application์„ ๋งŒ๋“ ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด๋ฉด, ์ตœ์ข… ํ”„๋กœ๋•ํŠธ๋Š” ์šฐ๋ฆฌ์˜ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์ปดํŒŒ์ผ๋˜์–ด ์‹คํ–‰ ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด์ง€๊ณ , ๊ทธ ์‹คํ–‰ ํŒŒ์ผ์ด ๊ฐ€์ ธ๋‹ค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฆฌ์†Œ์Šค๋“ค๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ๊ทธ๋ž˜์„œ Application์€ Package์ด์ž Bundle์˜ ํ•œ ์˜ˆ์ด๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ Bundle์€ Package์˜ ์ผ์ข…์ด์ง€๋งŒ, ๋ชจ๋‘ ๊ทธ๋ ‡์ง€๋Š” ์•Š๋‹ค. Framework์˜ ๊ฒฝ์šฐ์—๋Š” ๋Ÿฐํƒ€์ž„ ์‚ฌ์šฉ ํ˜น์€ ๋งํฌ๋ฅผ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋‹จ์ผ ๋ฒˆ๋“ค์ด์ง€๋งŒ, ๋‚ด๋ถ€ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ณผ ์ˆ˜ ์—†๋„๋ก ๋ง‰์•„๋‘” ๋‹จ์ผ ํŒจํ‚ค์ง€๋Š” ์•„๋‹ˆ๋‹ค. (์ € ์œ„์— ์žˆ๋Š” .framework๋Š” ์‹ค์ œ ์ œํ’ˆ์œผ๋กœ ๋นผ๋Š” ๊ฒฝ์šฐ๋ผ ๋‹ค๋ฆ„, Product์˜ ์ผ์ข…์ž„. ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ๊ฒƒ์€ ๋…ผ๋ฆฌ์ ์ธ ๊ฐœ๋…์ธ ๋“ฏ)

Bundle์˜ ๊ตฌ์กฐ๋Š” ๊ฐ๊ฐ์˜ ์œ ํ˜•์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค. ๋‹ค์Œ ๊ธ€์—์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.

Bundle Display Names

๋งฅ๋ถ์„ ์‚ฌ์„œ ํ•œ๊ธ€๋กœ ์–ธ์–ด ์„ค์ •์„ ํ•˜๊ณ  ์จ๋ณด๊ณ , ์˜์–ด๋กœ ์–ธ์–ด ์„ค์ •์„ ํ•˜๊ณ  ์จ๋ณด์•˜๋‹ค. ๊ทธ๋Ÿฌ๋ฉด, ๊ฐ™์€ ์•ฑ์ด๋ผ๋„ ํ‘œํ˜„๋˜๋Š” ์–ธ์–ด๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์–ธ์–ด์— ์ƒ๊ด€์—†์ด Finder์— ๋‚˜ํƒ€๋‚˜๋Š” ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ทธ ๊ธฐ๋Šฅ์„ ๊ฐ€๋Šฅ์ผ€ ํ•˜๋Š” ๊ฒƒ์ด Bundle Display Names์ด๋‹ค.

Finder๋Š” ์ด๋ ‡๊ฒŒ Bundle์ด .app์ธ ๊ฒฝ์šฐ ํ™•์žฅ์ž๋ฅผ ์ˆจ๊ธด๋‹ค. ๋˜ํ•œ ๋งŒ์•ฝ localized display names๋ฅผ ๊ฐ€์งˆ ๊ฒฝ์šฐ, ํ˜„์žฌ ์–ธ์–ด ์„ค์ •๊ณผ ์ผ์น˜ํ•˜๋Š” ์ด๋ฆ„์„ ํ‘œ์‹œํ•œ๋‹ค.

Advantages

์‹คํ–‰ ํŒŒ์ผ๊ณผ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ฌถ์ธ ๋‹จ์œ„๋กœ์„œ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ ๋งŒ์œผ๋กœ๋„ ์„ค์น˜ ๋ฐ ์žฌ๋ฐฐ์น˜, ์ œ๊ฑฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋ž˜์„œ ๋งฅ์˜ ๊ฒฝ์šฐ ๋“œ๋ž˜๊น…ํ•ด์„œ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์„ ๋งŽ์ด ๋ณด์•˜์„ ๊ฒƒ์ด๋‹ค.

๋˜ ๋ฌถ์Œ ๋‹จ์œ„๋กœ ์ž‘์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž ์ˆ˜์ •์˜ ์˜ํ–ฅ์„ ๋œ ๋ฐ›๋Š”๋‹ค. ์ด๋Š” Bundle์ด์ž Package์ธ Application์— ๊ด€ํ•œ ์„ค๋ช…์ธ ๊ฒƒ ๊ฐ™๋‹ค.

Bundle๋กœ ๋ฌถ์ด๊ฒŒ ๋˜๋ฉด์„œ ๋‹ค์–‘ํ•œ CPU ์•„ํ‚คํ…์ณ์™€ ์ฃผ์†Œ ๊ณต๊ฐ„ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งž์ถœ ์ˆ˜ ์žˆ๋‹ค. ์ถ”ํ›„์— ์•Œ์•„๋ณด๊ฒ ์ง€๋งŒ ์‹ค์ œ๋กœ Apple์€ AppStore์—์„œ BitCode๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค์–‘ํ•œ ๋””๋ฐ”์ด์Šค์— ์ตœ์ ํ™”๋œ Bundle(์—ฌ๊ธฐ์„œ๋Š” .ipa)์„ ๋งŒ๋“ ๋‹ค. (App Thinning)

NSBundle

๋””์Šคํฌ์— ์žˆ๋Š” Bundle directory์˜ Resource์™€ Code์— ๋Œ€ํ•œ ํ‘œํ˜„

์ฆ‰, Bundle์— ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณต๋˜๋Š” ๊ฐ์ฒด์ด๋‹ค. ์ƒ๊ฐ์„ ํ•ด๋ณด์ž. ์ผ๋‹จ Bundle์€ ์œ ํ˜•์— ๋”ฐ๋ผ ๊ตฌ์กฐ๊ฐ€ ๋‹ค๋ฅด๋‹ค๊ณ  ํ–ˆ๋‹ค. ๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ Bundle๋กœ ์ œ๊ณต๋˜๋Š” ๊ฒƒ์— ์ ‘๊ทผํ•ด์„œ ์ž‘์—…์„ ํ•˜๋ ค๋ฉด ์ƒ๋‹นํžˆ ๋ณต์žกํ•  ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฐ ๋ถ€๋ถ„์„ NSBundle์ด ํ•ด๊ฒฐํ•ด์ค€๋‹ค.

NS ํ‚ค์›Œ๋“œ๋ฅผ ๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ Objective C๋กœ ๋งŒ๋“ค์–ด์ง„ Foundation Class์ด๋‹ค. ๊ทธ๋Ÿผ Objective C์—์„œ๋งŒ ์“ธ ์ˆ˜ ์žˆ๋‚˜? ๊ทธ๋ ‡๋‹ค. Swift๋„ ์ด๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ฌธ์ œ๋Š” ์—ฌ๊ธฐ์„œ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋…€์„์˜ ์ด๋ฆ„์ด ๋ฐ”๋€Œ์—ˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค!!!! swift 3๋ถ€ํ„ฐ!

Bundle (Swift)

ใ… ใ…  ํ•˜ํ•„ ์ด๋ฆ„์ด ํ—ท๊ฐˆ๋ฆฌ๊ฒŒ ๋˜‘๊ฐ™์ด ๋ฐ”๋€Œ์–ด ๋ฒ„๋ ธ๋‹ค.. ์—ฌํŠผ, Bundle์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

  1. ํŠน์ • Bundle ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์œ„ํ•œ NSBundle ๊ฐ์ฒด ์‚ฌ์šฉ(ex: main bundle)
  2. NSBundle์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ(ex: Bundle.main.url(resource:extension:))
  3. ๋‹ค๋ฅธ ์‹œ์Šคํ…œ API์™€ ๋ฆฌ์†Œ์Šค๋ฅผ ํ†ตํ•œ ์ธํ„ฐ๋ ‰์…˜

์ž˜ ์™€๋‹ฟ์ง€ ์•Š์ง€๋งŒ, ์‚ฌ์‹ค ์šฐ๋ฆฌ๊ฐ€ image์—์„œ ์ด๋ฏธ์ง€๋ฅผ init(named:)๋กœ ๊ฐ€์ ธ์˜ค๋Š” ํ–‰์œ„๊ฐ€ Bundle๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฑฐ๋‹ค. ๋ฌผ๋ก  ๋ช…์‹œ์ ์œผ๋กœ Bundle์„ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ. ๊ฒฐ๊ตญ ๋‚ด๋ถ€ Asset Catalog๋ผ๋Š” ๋ฒˆ๋“ค์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๊ฑฐ๋‹ˆ๊นŒ.

Main Bundle

ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ์ฝ”๋“œ๊ฐ€ ํฌํ•จํ•˜๋Š” Bundle directory์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” bundle

๋ง์ด ์ฐธ ์ด์ƒํ•˜๋‹ค.. ์•ž์˜ ๊ฒฝ์šฐ directory์˜ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ , ๋’ค์˜ ๊ฒฝ์šฐ code level์—์„œ ์ œ๊ณตํ•˜๋Š” API๋ผ ์ดํ•ดํ•˜๋ฉด ๋˜๊ฒ ๋‹ค. ๋ณดํ†ต์€ ์ด๋Ÿฌํ•œ ์šฉ๋„๋กœ Bundle์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.

open class Bundle : NSObject {
    /* Methods for creating or retrieving bundle instances. */
    open class var main: Bundle { get }
}
 
// Usage
Bundle.main

Usage Of Main Bundle

๊ทธ๋Ÿผ ์ผ๋‹จ Bundle์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‚ด ํ”„๋กœ์ ํŠธ์— Resource๋ฅผ ๋„ฃ์–ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค. ์ด์ „์—๋„ ๋งํ–ˆ์ง€๋งŒ, image ๊ฐ™์€ ๊ฒƒ์€ ์ด๋ฏธ ์•Œ๊ฒŒ๋ชจ๋ฅด๊ฒŒ Bundle์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ–ˆ๋‹ค. ๊ทธ๋Ÿผ Resource์ค‘์— ์•„์ฃผ ํ”ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” image๋ถ€ํ„ฐ ์ถ”๊ฐ€ํ•ด๋ณด์ž.

์ด๋ฏธ์ง€๋ฅผ ๋“œ๋ž˜๊ทธํ•ด์„œ ํ”„๋กœ์ ํŠธ์— ์˜ฌ๋ ค๋‘๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐฝ์ด ๋œฌ๋‹ค. ํ™•์ธ์„ ๋ˆ„๋ฅด๊ฒŒ ๋˜๋ฉด ํ”„๋กœ์ ํŠธ์— ๋ฆฌ์†Œ์Šค๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๊ณ , ์•ฑ ์ „์—ญ์—์„œ Main Bundle์„ ํ†ตํ•ด ์ด๋ฏธ์ง€์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

Bundle.main.url(forResource: "imageName", withExtension: ".png")

Main Bundle์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ์œ„์น˜

๊ทธ๋ƒฅ ์‚ฌ์šฉํ•˜๊ธฐ ๋ณด๋‹ค๋Š”, Bundle.main์ด๋ผ๋Š” ๋…€์„์ด ์ •๋ง ๋‚ด Bundle(or Package.. ๋””๊ฒŒ ํ—ท๊ฐˆ๋ฆฌ๋„ค)๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž! Bundle.main.bundleURL์„ ์ถœ๋ ฅํ•˜๋ฉด ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ถœ๋ ฅํ•˜๊ฒŒ ๋˜๋ฉด ํ˜„์žฌ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์˜ Hash String์˜ ํด๋” ๋‚ด๋ถ€๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ํ•ด๋‹น String์€ ๋‹ค์Œ ๊ฒฝ๋กœ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค.

  • Xcode โ†’ Window โ†’ Devices and Simulator โ†’ ๋นŒ๋“œํ•œ ๊ธฐ๊ธฐ ํด๋ฆญ โ†’ identifier
/Users/userName/Library/Developer/CoreSimulator/Devices/...Hash String.../data/Containers/Bundle/Application/...Application Hash.../test.app

์ฐพ์•˜๋‹ค ์š”๋†ˆ! ๊ฒฐ๊ตญ Main Bundle์€ ๋‚ด๊ฐ€ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” Target Bundle์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์—ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ตœ์ข…์ ์œผ๋กœ ์ƒ์„ฑ๋œ test.app์€ Package์ด์ž Bundle์ธ ๋””๋ ‰ํ† ๋ฆฌ์ด๋‹ค.

Copy Resources To Bundle

๊ทธ๋Ÿผ ์ด์ œ ์•Œ์•˜๋‹ค. โ€œ์•„ ํ”„๋กœ์ ํŠธ์— ๊ฐ์ข… ๋ฆฌ์†Œ์Šค๋ฅผ ๋‹ค ๋•Œ๋ ค๋„ฃ๊ณ , ์ด๊ฑธ๊ฐ€์ง€๊ณ ์„œ ์ตœ์ข… ํ”„๋กœ๋•ํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด๋Š” ๊ฑฐ๊ตฌ๋‚˜!โ€ ๋งž๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Resources๋“ค์€ ์–ธ์ œ Bundleํ™” ๋ ๊นŒ? ๋‹ต์€ Buildํ•  ๋•Œ์ด๋‹ค.

Build Phase์— ๊ฐ€๋ฉด, Copy Bundle Resources๋ผ๋Š” ํƒญ์ด ์žˆ๋‹ค. ์—ฌ๊ธธ ๋ณด๋ฉด, ๋‚ด๊ฐ€ ๋ฐฉ๊ธˆ ์ถ”๊ฐ€ํ•œ ์ด๋ฏธ์ง€์˜ ์ฃผ์†Œ๊ฐ€ Reference๋˜์–ด ์žˆ๋Š”๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ณด๋ฉด Launch Screenํ•˜๊ณ  Asset Catalog ๋“ฑ๋“ฑ์ด ๋“ค์–ด ์žˆ๋‹ค. ์‘? Storyboard๋„ Resource์ธ๊ฐ€? ์ด๊ฑด ๋‹ค์Œ ๊ธ€์— ์•Œ์•„๋ณด์ž..

๊ทธ๋Ÿผ ๋ฐ˜๋Œ€๋กœ ๋งํ•˜๋ฉด, ์—ฌ๊ธฐ์— ์ถ”๊ฐ€๊ฐ€ ์•ˆ๋˜์–ด ์žˆ์œผ๋ฉด Project Navigator(์™ผ์ชฝ ํŒŒ์ผ๋“ค ๋‚˜์—ด๋œ ๊ฑฐ)์— ์ถ”๊ฐ€๋˜์–ด ์žˆ์–ด๋„ Bundleํ™”๊ฐ€ ์•ˆ๋œ๋‹ค๋Š” ์–˜๊ธฐ์ธ๊ฐ€? ๊ทธ๋ ‡๋‹ค. ๊ทธ๋ž˜์„œ ์ ‘๊ทผํ–ˆ์„ ๋•Œ ๊ฐ’์ด nil์ด ๋œจ๊ฒŒ ๋œ๋‹ค.

Main Bundle Sub Directory

๋งŒ์•ฝ์— image๋ฅผ ๋ฐฉ๊ธˆ ๋‚˜๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ทธ๋ƒฅ ์ตœ์ƒ์œ„์— ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ , ํด๋”๋กœ ๋ฌถ์ธ ์œ„์™€ ๊ฐ™์€ ์นœ๊ตฌ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž.

๊ทธ ๋‹ค์Œ์— ์ด ๊ทธ๋ฃน์•ˆ์— ์žˆ๋Š” ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ API๋ฅผ ํ™œ์šฉํ–ˆ๋‹ค.

Bundle.main.url(forResource: "wired_egg", withExtension: "jpg", subdirectory: "groupName", localization: nil)

ํ•˜์ง€๋งŒ ์•„๋ฌด๊ฒƒ๋„ ๋œจ์ง€ ์•Š์•˜๋‹ค. ์˜คํžˆ๋ ค ํด๋”๊ฐ€ ๋‹ค ํ’€๋ ค์„œ Bundle์— ๋“ค์–ด๊ฐ€ ์žˆ์—ˆ๋‹ค! ํ•ด๋‹น ์ฝ”๋“œ๋Š” nil์„ ๋ฆฌํ„ดํ–ˆ๋‹ค.

๋ฆฌ์†Œ์Šค ํŒŒ์ผ์ด ์–ด๋–ป๊ฒŒ ๋“ค์–ด๊ฐ€๋Š”์ง€ ๋ณด์•˜๋”๋‹ˆ ๋‹ค ํ’€๋ ค์„œ ๋“ค์–ด๊ฐ”๋‹ค! ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฑด ์ด๊ฒŒ ์•„๋‹ˆ๋‹ค.

์ด๋Ÿด ๋•Œ, Create Group ์˜ต์…˜ ๋ง๊ณ , Create Folder Reference ์˜ต์…˜์„ ์„ ํƒํ•˜๋ฉด ๋œ๋‹ค.

๊ทธ๋Ÿผ ํด๋” ์ฑ„๋กœ ๋“ค์–ด๊ฐ€๋ฉด์„œ, Reference๋กœ Copy Bundle Resources์— ๋“ค์–ด๊ฐ„๋‹ค.

ํŒจํ‚ค์ง€ ํด๋”์—๋„ ๋‚ด ์ž์‹๋“ค์ด ์˜ˆ์˜๊ฒŒ ๋“ค์–ด๊ฐ”๋‹ค.

Reference