Error
Failed to build module '\(SDK 이름)’; this SDK is not supported by the compiler (the SDK is built with 'Apple Swift version 5.7.1 (swiftlang-5.7.1.135.3 clang-1400.0.29.51)', while this compiler is 'Apple Swift version 5.8 (swiftlang-5.8.0.124.2 clang-1403.0.22.11.100)'). Please select a toolchain which matches the SDK.
발생 상황
- iPhone의 OS를
iOS 16.4
로 업데이트 했더니 Xcode에서 지원 안하는 OS 버전이라 Xcode도 업데이트 해야했다.
- Xcode 버전을 14.2에서 14.3으로 올렸더니 잘 쓰고 있던 라이브러리가 갑자기 수없이 많은 에러를 내뱉었다.
원인
Xcode 14.3
으로 업데이트 되면서Swift 5.8
도 함께 릴리즈 되었다. 그러면서 기존의 라이브러리 컴파일러와 버전이 맞지 않아서 생기는 문제인것 같다.
- 라이브러리 개발자라면 이에 대해 두가지 해결 방법이 있는 것 같다.
- Swift 5.8 버전의 컴파일러로 만든 라이브러리를 재배포
- ABI 호환성을 보장하도록 설정 : 좋은 포스트가 있어 링크
- 두번째가 더 나은 방법인 것 같지만 나는 라이브러리 개발자가 아니기 때문에 내가 선택할 수 있는 방법은 아니다.
해결
- 에러에 보면 맞는 SDK에 맞는 ToolChain을 선택하라고 한다. 여기에서 Swift 5.7버전을 다운 받아서 설치하면 Xcode에 다음과 같이 Toolchains 항목이 생기는 것을 확인할 수 있다.
→ 안타깝게도 해당 방법으로 해결이 안된다. 시뮬레이터나 macOS에서는 잘 돌아가지만 실제 기기에 연결해서 빌드하려고 하면 다음과 같은 에러가 뜬다. 결국 삽질이었다.
- 결국 해결방법은 애플 개발자 사이트에서 기존 버전 Xcode를 다운받는 수밖에 없다. 최신 버전과 기존버전 이 설치되어 있다면 기존 버전 Xcode에서도 최신 버전 iPhone이 지원이 되고, 최신 버전 Xcode에서도 기존 버전의 언어로 개발할 수 있다.
- 최신 버전에서 기존 버전의 언어로 개발을 하려면
Xcode > Settings > Locations > Command Line Tools
에서 이전 버전의 Xcode를 선택하면 된다.
Reference
Uploaded by N2T