Could not find module for target ‘x86_64-apple-ios-simulator’

21년 9월 19일 m1 맥북에서 SwiftUI 미리보기 안되서 고생한 건수

brownsoo han
4 min readSep 18, 2021

m1 맥북이 나온지도 오래됐으니 누군가가 명쾌하게 해결했을 꺼라 검색에 검색을 더했지만, 계속 실패…

몇주를 같은 문제로 고생하다 처음엔 어떻게 되고 있었던 건지 생각도 나지 않는다. 몇몇 라이브러리가 동작되지 않았고, SwiftUI의 장점인 UI Preview 를 할 수 없게 되었다. 같은 이유로 시뮬레이터에서도 동작하지 않았다.

Could not find module for target 'x86_64-apple-ios-simulator'

맥북이 arm64인데, 시뮬레이터는 x86_64 또는 arm64를 실행할 수 있다. 아래 경로에서 확인이 가능하다.

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/SDKSettings.json

디버그 빌드에서 Excluded Architectures 속성으로 x86_64시뮬레이터 버전을 빼버리면 되겠지 했지만,, 여전히 문제가 사라지지 않았다.

라이브러리쪽에서 x86_64과 arm64 기반의 시뮬레이터용 빌드가 전부 준비되어 있고, 빌드할 때 선택적으로 필요한 것을 포함시켜 빌드가 진행되는 것을 뒤늦게 이해했다. (그래서 XCFrameworks 방식이 나온 거겠지..)

그런데 Swift Package Manager 으로 등록된 것들 중 시뮬레이터용 빌드가 준비되지 않은 것으로 판단되어, SPM으로 등록한 라이브러리들을 전부 Pods 로 변경했다.

(수정) Excluded Architectures 와 상관없이 Active Architecture Only를 설정해놓으면, SPM 소스들은 m1 노트북 아키텍쳐인 arm64로 빌드가 된다. 그래서 SPM 을 사용하려면, arm64 를 제외시키면 안된다.

Architectures 설정

그런 다음, Pods 라이브러리들은 모든 architecture로 빌드되도록 했다.

post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings["ONLY_ACTIVE_ARCH"] = "NO"
end
end
end

이렇게 2가지 (x86_64, arm64 )로 빌드가 되니, 드디어 미리보기가 가능해지고 시뮬레이터에서도 실행할 수 있게 되었다 ㅠㅠ.

2개 아키텍쳐로 빌드됨

(수정) Pods 라이브러리 또한 ONLY_ACTIVE_ARCH를 활성화시켜도 상관없다. 원인은 파일로 가져다 쓰는 프레임워크에 존재했다.

XCFrameworks 에는 아키텍처를 포함한 모든 빌드 변형을 포함하고 있어서 그런지, XCFrameworks 형식으로 작성된 라이브러리들은 이렇게 강제로 모든 아키텍쳐 빌드를 시키지 않아도 잘 동작한다.

어째든 성공.. 난 급하니까 일 먼저 처리하고 다시 수정해나가겠음.

--

--