[Xcode]12버전 시뮬레이터 빌드 에러 해결 방법(arm64 에러)

신용철·2021년 6월 24일
1

1. 에러 발생 원인

  • 앱 빌드시 생성되는 바이너리는 CPU의 영향을 받는데 기존 맥북은 i5, i7과 같이 인텔 CPU를 사용하고 이 CPU는 x86_64 아키텍쳐를 사용합니다. 그리고 Xcode 12버전 이전에는 시뮬레이터로 앱을 빌드하면 자동으로 x86_64를 사용하도록 설정되어 있어 아무런 문제가 없었죠.

  • 그런데 새롭게 출시되는 맥북은 CPU가 애플 자사에서 생산하는 ARM을 기반으로 합니다. 즉, CPU가 달라졌으니 빌드 할 때 사용되는 CPU의 아키텍처도 변하게 되는 것이죠. 여기서 사용하는 아키텍처가 바로 arm64입니다.

  • 결과적으로 인텔 CPU 맥북과 ARM 맥북이 공존하게 되면서 맥북의 CPU에 맞게 시뮬레이터를 사용할 때 arm64를 사용할 것인지 x86_64를 사용할 것인지 설정을 해줄필요가 생긴 것입니다.

2. 에러 해결 방법

  • 우선, Bulid Settings으로 이동합니다.

  • 아래의 이미지와 같이 Bulid Settings의 Excluded Architectures에서 Debug 부분에 빌드에 사용할 시뮬레이터를 추가하고 arm64를 입력해줍니다.

  • 이렇게 설정을 하면 Build Configuration이 Debug로 설정되어 있을 때, 시뮬레이터로 프로젝트 빌드시 arm64를 사용하지 못하게 함으로서 인텔 CPU의 x86_64아키텍처에 맞게 바이너리를 생성하게 됩니다.

  • Bulid Settings의 User-Defined에서 VALID_ARCHS를 삭제해줍니다. VALID_ARCHS란 위에서 설명한 Excluded_ACHS와 반대로 빌드시 사용가능한 아키텍처를 설정하는 것을 의미합니다. 12버전 이전의 Xcode에서는 Excluded_ACHS대신에 VALID_ARCHS를 사용했었습니다. 12버전으로 오면서 "사용가능한 아키텍쳐"를 설정하는 대신 "사용하지 말아야할 아키텍쳐"를 설정하는 방식으로 바뀐 것이죠.

  • VALID_ARCHS를 Xcode에서 지울 수 없는 경우에는 project.pbxproj 를 열어 "VALID_ARCHS"로 검색하여 VALID_ARCHS에 해당되는 코드를 삭제해주면 됩니다.(아래 이미지 참고)

  • project.pbxproj은 아래 이미지와 같이 패키지 내용보기를 하시면 확인하 실 수 있습니다.

  • project.pbxproj을 열어 "VALID_ARCHS"로 검색하여 VALID_ARCHS에 해당되는 코드를 모두 삭제해줍니다.

profile
iOS developer

0개의 댓글