본문 바로가기

Xcode

[Xcode] M1 'cyclone' is not a recognized processor for this target 해결법

- 2022.09.21 업데이트

https://github.com/navermaps/ios-map-sdk/blob/master/CHANGELOG.md

 

GitHub - navermaps/ios-map-sdk: 네이버 지도 iOS SDK 데모 앱

네이버 지도 iOS SDK 데모 앱. Contribute to navermaps/ios-map-sdk development by creating an account on GitHub.

github.com

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

 

ios 시뮬레이터가 꺼집니다 - 인프런 | 질문 & 답변

토글 버튼을 클릭하면 네이버맵이 켜졋다가 바로 꺼져 버리는 현상이 자꾸 발생합니다... - 질문 & 답변 | 인프런...

www.inflearn.com

https://developer.apple.com/forums/thread/658330

 

'cyclone' is not a recognized proc… | Apple Developer Forums

I'm seeing it when calling glDrawElements() but not SpriteKit, so it looks like it has to do with the OpenGL implementation, rather than SpriteKit itself? Also Big Sur, also M1 MBA.

developer.apple.com

 

여러 레퍼런스들을 찾아보니 M1 환경에서 특정 라이브러리로 인해 발생한다는 것을 알았습니다.

저의 경우엔 네이버맵스 때문에 발생했으며 xcframework 를 코코아팟이 아닌 Carthage 로 받았습니다.

그래서 Xcode 를 로제타로 실행한 뒤 Derived Data 영역을 지우고 다시 빌드를 했습니다. 그랬더니 기존에 발생하던 크래쉬가 발생하지 않았습니다.

빌드된 결과물을 확인해봤습니다.

Xcode 를 로제타로 실행하지 않았을 때
Xcode 를 로제타로 실행했을 때

로제타로 실행하면 시뮬레이터를 x86_64 로 실행합니다. 하지만 Xcode 를 로제타로 실행하면 훌륭한 M1 의 성능을 온전히 발휘할 수 없습니다.

그래서 대안으로 Build Settings 에 "EXCLUDED_ARCHS": "arm64" 를 적용했습니다.

이 때 Tuist + Dependencies 를 사용하는 환경이라면, 만들어지는 모든 SPM 프로젝트에도 적용해주어야합니다.

Derived Data 를 제거해준 뒤 다시 빌드를 하면 로제타로 Xcode 를 실행하지 않아도 x86_64 아키텍처로 시뮬레이터를 실행하게 됩니다.

단 기기로 다시 빌드를 할 때에는 초기화시켜야하니 스크립트로 관리하시는 것을 추천합니다.