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 ์ด๋ค.
์, ์์ ์ํคํ ์ณ ์ค๋ช ์ ํ๋ฉด์ ์์์ผ ํ๋ ๋ด์ฉ์ ๋๊ฐ์ง๋ก ์์ถ๋๋ค.
- ์์ดํฐ์ ๊ธฐ์ข ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ํคํ ์ณ์ CPU๋ฅผ ์ฌ์ฉํ๋ค.
- ๋น๋๋ฅผ ํ๋ฉด ๋ฐ์ด๋๋ฆฌ๊ฐ ์์ฑ๋๋๋ฐ, ์ด ๋ฐ์ด๋๋ฆฌ๋ 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
- CPU Architectures
- ARM ์ํคํ ์ฒ
- Apple ํ์ ๊ธฐ๊ธฐ ๊ธฐ๋ฅ
- iOS Devices: Releases, Firmware, Instruction Sets, Screen Sizes
- Universal App, armv7, arm64 ๋ฉํฐ ๋๋ฐ์ด์ค ๋์, ๋ฐ์ด๋๋ฆฌ ํ์ผ ์ค์ (CISC, RISC)
- Xcode12์์ ์๋ฎฌ๋ ์ดํฐ ๋น๋ ์ค๋ฅ ์์ธ ๋ฐ ํด๊ฒฐ๋ฐฉ๋ฒ
- UIRequiredDeviceCapabilities
- Building a Universal macOS Binary