본문 바로가기

Xcode 12.3에서 발생하는 Fat Framework 링크 오류 문제

기술적인 이야기/애플 플랫폼 개발 2020. 12. 17.
반응형

Xcode를 12.3 버전으로 올린 이후부터 회사 프로젝트를 빌드할 때 아래와 같은 오류가 발생하기 시작했다.

Building for iOS, but the linked and embedded framework 'Foobar.framework' was built for iOS + iOS Simulator.

이 프로젝트는 비공개 iOS용 라이브러리와 iOS 시뮬레이터용 라이브러리를 lipo를 이용해 합쳐서 만든 Fat Framework(혹은 Universal Framework)다. 이 프레임워크로 이전 버전의 Xcode에서는 빌드가 잘 되었는데 유독 12.3부터 이런 식의 오류가 발생하기 시작했다.

해결하기

이 문제의 해결은 의외로 쉽다. Target의 Build Settings에서 Validate Workspace 항목을 Yes로 설정하기만 하고 다시 빌드해 보면 된다.

개인적으로 이후 문제없이 빌드가 되었다.

아무래도 Xcode 개발진들이 멀티플랫폼 프로젝트에만 신경 쓰느라 특정 플랫폼 전용 프로젝트에서 약간의 미스가 있지 않았나 생각된다. 어쩌면 이후의 버전에선 해결될 가능성이 없지는 않아 보인다.

PS. 참고로 Xcode 12.3부터 xcodebuild로 빌드할 때 -sdk iphonesimulator 옵션으로 빌드해도 실제 아키텍처는 arm64로 빌드가 되는 것 같다. 아마도 M1의 등장으로 시뮬레이터도 굳이 인텔 호환(i386, x86_64)으로 맞출 이유가 없어져서 일지도 모르겠다. 따라서 이제부터는 시뮬레이터용 빌드도 아키텍처를 명확하게 적어줘야 한다. 예를 들어 인텔 맥에서 동작하는 시뮬레이터용으로 빌드하고 싶다면 -arch x86_64 옵션을 추가해야 한다.

728x90
반응형

댓글