일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- MYSQL
- git
- SwiftUI
- MSYS2
- Android
- css
- 앱리소스
- 안드로이드
- apple
- MFA
- fido
- otpkey
- FIDO2
- SSL
- Xcode
- 앨범북
- SSH
- 2FA
- 앱스토어
- openssl
- WebAuthn
- SWIFT
- OSX
- albumbook
- Nodejs
- kmip
- 애플
- appres
- OTP
- 인증
- Today
- Total
인디노트
Bitcode 본문
Apple 관련 앱을 개발하다보면 아카이브 단계에서 괴롭히는것이 Bitcode 가 Full 로 지원하지 않고 있다는 메시지일 경우가 많다.
개발 중에 빌드 단계에서는 전혀 잘 눈치채지 못하다가 꼭 아카이브 상황에서 발견하는 경우가 많기 때문이다.
어쨋든 iOS 는 Bitcode 를 꺼도 스토어에 등록은 시켜 주지만
watchOS, tvOS 와 같은것은 Full Bitcode 를 지원하지 않으면 리젝을 당하기 때문에 더욱 중요하다고 할 수 있다.
빌드 단계에서 Bitcode 를 사용하기 위해서는
User Defined Settings 에 BITCODE_GENERATION_MODE 를 bitcode 로 설정하여 컴파일 하는 것이다.
기본적으로 이 옵션은 marker 혹은 bitcode 이렇게 값을 줄 수 있는데 marker 는 bitcode 를 실제로 포함은 하지 않고 그냥 bitcode 가 존재한다는 마커만 할 뿐이다.
실제 gcc 같은 컴파일에서 -embed-bitcode-marker 옵션이 marker 에 해당한다. 이는 컴파일 시 bitcode 관련 flag 를 추가해 주는 역할이다.
아카이브에서는 -embed-bitcode 옵션을 주고 컴파일하게 된다. 이것은 실제 bitcode 를 포함하여 컴파일 하게 되는 것이다.
otool 을 이용하여 바이너리의 bitcode 확인이 가능하다.
$ otool -arch arm64 -l Framewotk/Framework | grep __LLVM
$ otool -arch armv7k -l libFile.a | grep __LLVM
하지만, 이것이 Full Bitcode 를 포함하고 있는지 확인은 되지 않는다.
Xcode 에서 BITCODE_GENERATION_MODE 를 bitcode 로 설정한 후 빌드를 해보는게 가장 확실하다.
Xcode 는 기본적으로 빌드 단계에서는 Bitcode 를 marker 로 설정한다. 이것은 빌드 (흔히 개발중 혹은 디버깅) 단계에서는 코드의 컴파일 속도가 오래 걸리면 개발하기 어렵기 때문이다.
bitcode 를 모두 포함한다는 것은 각 아키텍처에 맞는 모든 코드를 빌드해야 하기 때문에 컴파일 속도가 다소 오래 걸리게 되기 때문이다. 그래서 marker 가 필요한 것이다.
이런 저런 이유로 당연히 아카이브 단계에서는 marker 같은것이 통하지 않는다.
'개발 플랫폼 및 언어' 카테고리의 다른 글
macOS (OS X) BigSur 에 Maven 설치 (0) | 2021.06.17 |
---|---|
윈도우즈 10 정품 인증 (개발용 VM 적용에 유리) (0) | 2021.06.15 |
SSH 서버 보안 설정 (0) | 2021.04.14 |
구글 클라우드 인스턴스 centos 7 만든후 (0) | 2021.03.17 |
해킨토시 - 카탈리나 10.15.1 => 10.15.6 콤보 업데이트 (SAMSUNG SSD 860 EVO 500GB) (0) | 2020.07.20 |