์ฑ ๋ฐฐํฌ๋ฅผ ํ๋ค๋ณด๋ฉด bitcode enabled๋ผ๋ flag๊ฐ ์๋ค. ์ด๋ ์์ ์ฒดํฌํ๋ ๋ง๋์ ๋ฐ๋ผ์ ๋น๋ ์๋๊ฐ ์๋นํ ์ฐจ์ด๋๋ ๊ฒ์ ๋ณด์๋๋ฐ ๋๋์ฒด ์ ๊ทธ๋ฐ ๊ฑด์ง ์ดํดํด๋ณด๋ ค ํ๋ค.
bitcode
๋ค์์ Distrubution Options์์ ์ฐพ์ ์ค๋ช ์ด๋ค.
Bitcode is an intermediate representation of a compiled program. Apps you upload to App Store Connect that contain bitcode will be compiled and linked on the App Store. Including bitcode will allow Apple to re-optimize your app binary in the future without the need to submit a new version of your app to the App Store.
- ์ปดํ์ผ๋ ํ๋ก๊ทธ๋จ์ ์ค๊ฐ ํํ
- ์ฑ์คํ ์ด ์ปค๋ฅํธ์ ์ ๋ก๋ ์ ๋นํธ์ฝ๋๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ ์ฑ์คํ ์ด์์ ์ปดํ์ผ ๋ฐ ๋งํฌ๋จ
- ๋นํธ์ฝ๋๋ฅผ ์ ์ถํ๋ฉด, ์๋ฒ์ ์ฑ์ ์ ์ถํ ํ์์์ด ์ฑ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ค์ ์ต์ ํ ํ ์ ์์
For iOS apps, bitcode is the default, but optional. For watchOS and tvOS apps, bitcode is required. If you provide bitcode, all apps and frameworks in the app bundle (all targets in the project) need to include bitcode.
- iOS์ฑ์ ๊ฒฝ์ฐ bitcode๊ฐ ๊ธฐ๋ณธ์ด๋ ์ต์ ๋์
- watchOS ๋ฐ tvOS ๊ฒฝ์ฐ ํ์
- ๋ง์ฝ ๋นํธ์ฝ๋๋ฅผ ์ ๊ณตํ๋ค๋ฉด, ์ฑ ๋ฒ๋ค ํ์์ ๋ชจ๋ Target์ด ๋นํธ ์ฝ๋๋ฅผ ํฌํจํด์ผ ํจ
์ ๋ฆฌํด๋ณด๋ฉด,
- ์ค๊ฐ ๋จ๊ณ์ ์ฝ๋
- ๋ค๋ฅธ ์ํคํ
์ณ์ ๋ํ ์ต์ ํ๋ฅผ ์งํํ์ฌ ์ฑ ํฌ๊ธฐ๋ฅผ ์ค์
- App Slicing๊ณผ ํจ๊ป ์ฌ์ฉ๋จ
- BitCode Option์ ์ผ๋ฉด, Intermediate Represention์ผ๋ก ์ฌ๋ ค AppStore์์ ์ปดํ์ผ ๋ฐ ๋งํฌํด์ค
- ๋๊ฒ๋๋ฉด ์ต์ข ์ปดํ์ผ ๊ฒฐ๊ณผ๋ฅผ ์ฌ๋ฆผ
LLVM
์์ฝํ ๊ฒฐ๊ณผ๋ ์์ ๊ฐ์ง๋ง, ๋ณด๋ค ์ฌ์คํ ๋ด์ฉ์ด ์จ์ด์๋ค. LLVM์ Low Level Virtual Machine์ ์ฝ์๋ก, Intermediate ๋๋ Machine ์ธ์ด๋ก ์ฝ๋๋ฅผ ์ปดํ์ผ ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ ๋ถ๋ถ์ผ๋ก ๋๋๋๋ฐ, ๊ณ ์์ค ์ธ์ด๋ฅผ ์ค๊ฐ ํํ ์ฝ๋๋ก ๋ณ๊ฒฝํ๋ ํ๋ก ํธ ์๋์ ๊ทธ ์ค๊ฐ ํํ ์ฝ๋๋ฅผ ๊ธฐ๊ณ ์ธ์ด๋ก ๋ณํํ๋ ๋ฐฑ์๋๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
์ด ๊ตฌ์กฐ์ ์ฅ์ ์, ์ค๊ฐ ์ฝ๋๋ก ๋ฐ๊พธ๋ ๊ณผ์ ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ฐ์ด์ค์ ์ฌ์ฉ๋๋ CPU๋ฅผ ์์ฝ๊ฒ ๋ณ๊ฒฝํ ์ ์๋ค๋ ์ ์ด๋ค.
2013๋ , iphone5์์ ์ ํ์ 64bit ์นฉ์ ์ผ๋ก ๋ฐ๊พธ๊ณ ์๋ค๊ณ ๋ฐํํ์๋ค๊ณ ํ๋ค. (ํ์ quora link ์ฐธ๊ณ ) ์ด์ ์๋ ๊ฐ๋ฐ์๋ค์ด ์ฝ๋ ์์ ํ๊ณ , ์ฑ ์ปดํ์ผํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ ์ถํ์๋ค. ๊ทธ๋ฐ๋ฐ ์ด๋ ์์ ๋ถํฐ bitcode๋ฅผ ์ฌ๋ฆฌ๋ผ๋ ์ง์นจ์ด ์์๊ณ , ํ ์ฉ์๊ฐ ๊ทธ๊ฑธ ์์ธกํ๋ค. ์ฆ, ๋ค์ํ ๋๋ฐ์ด์ค์์ ์ฌ์ฉํ๋ cpu์ ๊ตฌ์ ๋ฐ์ง ์๊ณ ํ๋ฒ์ ์ ์ฉํ ์ ์๋๋ก ์ค๊ฐ ํํ ์ฝ๋๋ฅผ ์ฌ๋ฆฌ๊ณ , AppStore์์ ์ด๋ฅผ ์ฒ๋ฆฌํ์ฌ ์ฌ๋ฌ ๋๋ฐ์ด์ค์ ์ ์ฉํ๊ฒ ๋ค๋ ํฐ ๊ทธ๋ฆผ์ ๊ทธ๋ ธ๋ ๊ฒ!
์ด์ ์๋ ์ฑ์ด ์คํ๋ ์ ์๋ ๋ชจ๋ ํ๊ฒฝ๋ค (armv7, arm64, ๋ฑ๋ฑ)์ ๋ํด binary๋ฅผ ์์ฑํ๊ณ ํ๋๋ก ํฉ์น ๋ค ๋ณด๋๋ค๊ณ ํ๋ค. (app slicing์์ fat binary ๋ค์ด๋ดค์ฃต?) ์ด์ ๋ ์ด bitcode๋ฅผ ๋ณด๋ด๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก app slicingํ์ฌ app thinning์ด ๊ฐ๋ฅํ๊ฒ ๋ ๊ฒ์ด๋ค.
ํด๋น ์ต์ ์ค์ ์! ์์ ๊ฒฝ๋ก์์ ํ ์ ์๋ค.