- 2022.09.21 업데이트
https://github.com/navermaps/ios-map-sdk/blob/master/CHANGELOG.md
NaverMaps 3.15.0 에서 이슈가 있었습니다.
3.16.0 버전에서 시뮬레이터에서의 렌더러 기본 타입이 Metal 로 변경되었습니다.
---
회사 프로젝트를 CocoaPods 와 SPM 을 사용하는 환경에서 Tuist + Dependencies 를 사용하는 환경으로 이주를 했습니다.
이주를 하며 많은 이슈가 발생했었는데, 그 중에 하나 해결하기 어려웠던 이슈가 있어서 공유합니다.
현재 회사에서 Apple Silicon (M1 Pro) 환경에서 개발하고 있습니다. 이주 전에는 문제가 없었지만 이주하고 나서 시뮬레이터 환경에서 앱을 실행하자 빌드는 정상적으로 이루어졌으나 'cyclone' is not a recognized processor for this target (ignoring processor) 라는 콘솔 메시지와 함께 크래쉬가 발생했습니다.
https://www.inflearn.com/questions/557587
https://developer.apple.com/forums/thread/658330
여러 레퍼런스들을 찾아보니 M1 환경에서 특정 라이브러리로 인해 발생한다는 것을 알았습니다.
저의 경우엔 네이버맵스 때문에 발생했으며 xcframework 를 코코아팟이 아닌 Carthage 로 받았습니다.
그래서 Xcode 를 로제타로 실행한 뒤 Derived Data 영역을 지우고 다시 빌드를 했습니다. 그랬더니 기존에 발생하던 크래쉬가 발생하지 않았습니다.
빌드된 결과물을 확인해봤습니다.
로제타로 실행하면 시뮬레이터를 x86_64 로 실행합니다. 하지만 Xcode 를 로제타로 실행하면 훌륭한 M1 의 성능을 온전히 발휘할 수 없습니다.
그래서 대안으로 Build Settings 에 "EXCLUDED_ARCHS": "arm64" 를 적용했습니다.
이 때 Tuist + Dependencies 를 사용하는 환경이라면, 만들어지는 모든 SPM 프로젝트에도 적용해주어야합니다.
Derived Data 를 제거해준 뒤 다시 빌드를 하면 로제타로 Xcode 를 실행하지 않아도 x86_64 아키텍처로 시뮬레이터를 실행하게 됩니다.
단 기기로 다시 빌드를 할 때에는 초기화시켜야하니 스크립트로 관리하시는 것을 추천합니다.
'Xcode' 카테고리의 다른 글
[Xcode] Xcode Cloud 에서 사용하는 VM 의 사양은 어떻게 될까? (0) | 2022.08.04 |
---|---|
[Xcode] NaverMaps 를 Carthage 로 받는 방법 (Feat. Tuist) (0) | 2022.08.01 |
[Xcode] Cocoapods 를 사용하는 경우 M1 시뮬레이터 빌드가 안되는 문제 (1) | 2021.05.13 |
[Xcode] libSwiftPM.sylib 플러그인을 사용하는 동안 Xcode이(가) 예기치 않게 종료되었습니다. (0) | 2021.04.05 |
[Xcode] Breakpoint 사용하기 (3) - NSLog (0) | 2020.07.07 |