iOS ๋‚ด๋ถ€ ๋””๋ฐ”์ด์Šค์— ๋‹ค์–‘ํ•œ CPU ์ œํ’ˆ์ด ๋“ค์–ด๊ฐ์— ๋”ฐ๋ผ ์ด๋ฅผ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก Project setting์„ ํ•ด์•ผํ•œ๋‹ค. ๋‚ด๋ถ€ ๋””๋ฐ”์ด์Šค๋“ค์ด ์–ด๋–ค ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์ž. ์ด๋ฒˆ ๊ธ€์€ CPU Architecture ๊ธ€์„ ์ฝ๊ณ  ์˜ค๋ฉด ์ข€ ๋” ํŽธํ•˜๋‹ค. Framework์ด ๊ธ€๋„ ์ฝ์œผ๋ฉด ์ข‹๋‹ค.

ARM

ARM(Acorn RISC Machine)๊ธฐ๋ฐ˜์˜ cpi(Cycle Per Instruction)๋ฅผ ํƒ‘์žฌํ•œ ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ตœ๊ทผ์— Apple Silicon์ด ๋“ฑ์žฅํ•˜๋ฉด์„œ Rosetta๋ผ๋Š” ๊ฒƒ์ด ๋‚˜์™”๋Š”๋ฐ, ์ด๋Š” intel cpi๋กœ ๊ฐœ๋ฐœ๋œ ์•ฑ์„ arm cpi, ์ฆ‰ CSIC๋ฅผ RISC ๋ฐฉ์‹์œผ๋กœ ๋ฒˆ์—ญํ•˜๋Š” ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฒˆ์—ญ๊ธฐ๋ฅผ ๋งํ•œ๋‹ค.

armv7, arm64

๋‘˜๋‹ค arm architecture ์ด๋‹ค. ๋‹น์—ฐํžˆ RISC๊ธฐ๋ฐ˜ ํ”„๋กœ์„ธ์„œ์ด๋‹ค.

  • armv7
    • 32bit architecture
    • ์ž„๋ฒ ๋””๋“œ ๊ธฐ๊ธฐ์— ๋งŽ์ด ์‚ฌ์šฉ๋จ
    • iphone 4s ๋ฏธ๋งŒ (iOS 6.0 ์ดํ•˜)์—์„œ ์‚ฌ์šฉ๋จ
  • armv7s
    • iPhone 5, iPhone 5C
  • arm64
    • arm ์•„ํ‚คํ…์ณ์˜ 64๋น„ํŠธ ํ™•์žฅ ๋ฒ„์ „
    • iPhone 5s, iPad4 ์ด์ƒ์—์„œ ์‚ฌ์šฉ๋จ

|architecture|์ ์šฉ ๊ธฐ๊ธฐ|๋น„๊ณ | |:----------:|:---:--------|::----| |armv7|iPhone 4s, iPad3, iPad Mini1, ~iPod Touch5|32bit| |armv7s|iPhone 5, iPhone 5C, iPad4|32bit, armv7 ํ˜ธํ™˜| |arm64|iPhone 5S ~ iPhone X [Max],
iPad Air1 ~ 2, iPad Pro1 ~ 2, ~iPad7, ~iPad Mini4
~iPad Touch7|64bit| |arm64e|iPhone XR, iPhone XS [Max], iPhon 11 [Pro [Max]
iPad Pro3, iPad Air3, iPad Mini5|64bit, arm64 ํ˜ธํ™˜| |i386|32bit ๊ธฐ๊ธฐ์— ๋Œ€์‘ํ•˜๋Š” Simulator|32bit| |x86_64|64bit ๊ธฐ๊ธฐ์— ๋Œ€์‘ํ•˜๋Š” Simulator, Mac|64bit|

์ข€ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ•ด๋‹น ๋งํฌ์— ๋“ค์–ด๊ฐ€๋ฉด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Xcode CPU Arhitecture ์„ค์ •

์ผ๋‹จ ํ•ด๋‹น ์˜ต์…˜์— ๋“ค์–ด๊ฐ€๋Š” ๋ฐฉ๋ฒ•์€, Project โ†’ Target โ†’ Build Settings โ†’ Architectures ์ด๋‹ค.

์ž, ์œ„์˜ ์•„ํ‚คํ…์ณ ์„ค๋ช…์„ ํ•˜๋ฉด์„œ ์•Œ์•„์•ผ ํ•˜๋Š” ๋‚ด์šฉ์€ ๋‘๊ฐ€์ง€๋กœ ์••์ถ•๋œ๋‹ค.

  1. ์•„์ดํฐ์€ ๊ธฐ์ข…์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์•„ํ‚คํ…์ณ์˜ CPU๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  2. ๋นŒ๋“œ๋ฅผ ํ•˜๋ฉด ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋˜๋Š”๋ฐ, ์ด ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” CPU์—์„œ ์ฝ๊ณ  ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์•„ํ‚คํ…์ณ์— ๋งž๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

๋ฐฐํฌ๋ฅผ ํ•œ๋‹ค๊ณ  ํ•˜๋ฉด, ์ด ๋ชจ๋“  ๊ธฐ๊ธฐ์— ๋Œ€์‘๋˜๋„๋ก ๋ชจ๋“  ์•„ํ‚คํ…์ณ์— ๋งž๊ฒŒ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ด์•ผ๊ฒ ์ง€๋งŒ, ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์‹ค ํ•„์š”์—†๋‹ค. ๋‚ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ…Œ์ŠคํŠธ๊ธฐ๊ธฐ์˜ cpu architecture์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ๋งŒ ์ƒ์„ฑํ•˜๋ฉด ๋˜๋‹ˆ๊นŒ. ๊ทธ ์˜ต์…˜์ด Build Active Architectures Only์ด๋‹ค.

์ด ์˜ต์…˜์„ ํ‚ค๋ฉด, ํ˜„์žฌ ์—ฐ๊ฒฐ๋œ ๊ธฐ๊ธฐ๋ฅผ ๊ฐ์ง€ํ•ด์„œ, ํ•ด๋‹น ๊ธฐ๊ธฐ์— ๋งž๋Š” ์•„ํ‚คํ…์ณ์šฉ ๋นŒ๋“œ๋งŒ ์ƒ์„ฑํ•œ๋‹ค. ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” ์–ด๋–จ๊นŒ? ์ธํ…” ๋งฅ์ด๋ผ๋ฉด x86_64, ์• ํ”Œ ์‹ค๋ฆฌ์ฝ˜ ๋งฅ์ด๋ผ๋ฉด arm64 ์•„ํ‚คํ…์ณ๋กœ ๋นŒ๋“œ๋  ๊ฒƒ์ด๋‹ค. Xcode 12๊ธฐ์ค€, ํ˜„์žฌ๋กœ๋Š” ์ธํ…” ๋งฅ๊ณผ ์• ํ”Œ ์‹ค๋ฆฌ์ฝ˜์ด ๊ณต์กดํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ๋กœ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ์•„ํ‚คํ…์ณ๋Š” ๋‘๊ฐœ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์•„๋ž˜์˜ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์•„๊ฐ€๋ฉด ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์˜ ์ •๋ณด๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/SDKSettings.json

์ด์ „ Xcode 11์—์„œ๋Š” x86_64 ํ•˜๋‚˜๋งŒ ์žˆ์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค. apple silicon์˜ ๋“ฑ์žฅ์œผ๋กœ mac์˜ architecure์—ญ์‹œ arm๊ธฐ๋ฐ˜์œผ๋กœ ๋ณ€๊ฒฝ๋˜๋ฉด์„œ ๋‘ arcitecure๋ชจ๋‘๋ฅผ ํ˜ธํ™˜๋˜๋„๋ก ์„ค์ •๋˜์–ด ์žˆ๋‹ค. ๋งŒ์•ฝ ๋‚ด๊ฐ€ intel ๋งฅ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ์ด์ ์„ ๋ชจ๋ฅธ์ฑ„๋กœ ๋นŒ๋“œ์‹œ arm64 ๋ฅผ ์ œ์™ธํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ๋นŒ๋“œ์‹œ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.

Universal App ์„ค์ •

Universal App์€, ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์•„์ดํŒจ๋“œ์™€ ์•„์ดํฐ์„ ํฌํ•จํ•œ ๋ชจ๋“  ๋ฒ„์ „์˜ iOS์—์„œ ์‹คํ–‰๋˜๋Š” ์•ฑ์„ ๋งํ•œ๋‹ค. ์ด์ „์— ์•„์ดํŒจ๋“œ๋ฅผ ์ผ๋˜ ๊ฒฝํ—˜์ด ์žˆ๋‹ค๋ฉด, ์•„์ดํฐ์•ฑ์„ ๋ฐ›์€ ๊ฒฝ์šฐ ํ™”๋ฉด์„ ํ‚ค์šฐ๋Š” ๋ฒ„ํŠผ์ด ์žˆ๋Š” ๊ฒƒ์„ ๋ณธ์ ์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ด๊ฑด ํ˜ธํ™˜์„ฑ ๋ชจ๋“œ๋กœ ์•„์ดํฐ์˜ ์•ฑ์„ ์‹คํ–‰ํ•œ ๊ฒƒ์ด๋‹ค.

Universal App์€ ์•„์ดํฐ๊ณผ ์•„์ดํŒจ๋“œ ์‚ฌ์ด์˜ ๋‹ค์–‘ํ•œ ํ™”๋ฉด ํฌ๊ธฐ๋ฅผ ๋‹ค๋ฃจ๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค.

Apple ํ•„์ˆ˜ ๊ธฐ๊ธฐ ๊ธฐ๋Šฅ ์—ฌ๊ธฐ์— ๊ฐ€๋ณด๋ฉด ๋””๋ฐ”์ด์Šค๋ณ„ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์„ค๋ช…์ด ์žˆ๋‹ค. UIRequiredDeviceCapabilities๋ผ๋Š” ๊ฐ’์„ ๋ช…์‹œ์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ผ๊ณ  ํ•œ๋‹ค. ๋‚˜๋Š” ๋ชจ๋“  ๋””๋ฐ”์ด์Šค์—์„œ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋ฏ€๋กœ ํ•ด๋‹น ํ‚ค๊ฐ’์„ armv7์œผ๋กœ ์ง€์ •ํ•ด์ค€๋‹ค. ๋งŒ์•ฝ ํŠน์ • ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ๋ช…์‹œ์ ์œผ๋กœ ์ ์–ด์ฃผ์–ด์•ผ AppStore Reject์„ ์•ˆ ๋ฐ›๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.

Reference