비트코드(Bitcode)란 무엇인가?
비트코드(Bitcode)는 컴파일된 애플리케이션 코드의 중간 표현(Intermediate Representation)입니다. 이 형태의 코드는 개발자가 직접 실행하거나 실제 기기에 설치할 수 없습니다. 앱을 App Store에 업로드하면 비트코드 형태로 전송되며, 이후 Apple이 이를 최종 앱 바이너리로 변환합니다.
LLVM의 역할
중간 코드가 생성되어 App Store에 업로드되면, LLVM이라는 컴파일러가 이를 처리하여 최종 바이너리 파일로 변환합니다. 시뮬레이터용으로는 x86 32비트 또는 x86 64비트 아키텍처가, 실제 iOS 기기용으로는 ARM 아키텍처가 사용됩니다.
ENABLE_BITCODE 설정의 의미
ENABLE_BITCODE 옵션은 Xcode 프로젝트의 Build Settings에서 활성화할 수 있습니다. 비트코드 컴파일을 켜면 중간 표현(IR)이 빌드 시점에 바이너리로 직접 변환되지 않습니다. 따라서 이 상태의 코드는 어떤 환경에서도 실행할 수 없으며, 그대로 App Store에 업로드됩니다. 이후 Apple 서버에서 다양한 iOS 버전과 여러 iOS 기기에 최적화된 각각의 바이너리로 변환됩니다.
이 방식의 장점은 Apple이 향후 새로운 프로세서 아키텍처나 컴파일러 최적화 기술이 도입되더라도, 개발자가 앱을 다시 제출하지 않아도 기존 앱을 새 기기에 맞게 재컴파일할 수 있다는 점입니다.
참고: 비트코드는 더 이상 필수가 아닙니다
Apple은 Xcode 14부터 비트코드를 공식적으로 지원 중단(deprecated)했습니다. 이제 App Store는 비트코드가 포함된 제출을 받지 않으며, ENABLE_BITCODE 설정은 대부분의 프로젝트에서 NO로 두어도 됩니다. 다만 과거 프로젝트 유지보수 시 이 설정의 의미를 이해하고 있으면 도움이 됩니다.