본문 바로가기

Xcode

[Xcode] Cocoapods 를 사용하는 경우 M1 시뮬레이터 빌드가 안되는 문제

오랜만에 글을 씁니다.

저는 M1 맥으로 개발을 하고 있습니다. 호환성 문제로 안되는 것들이 많았는데, 특히 거슬리는 부분은 M1 맥에서 시뮬레이터로 빌드 시 Pods 내부에 있는 외부 모듈에서 발생하는 오류들입니다.

  • Building for iOS Simulator-x86_64 but attempting to link with file built for iOS Simulator-arm64
  • Undefined symbol: _OBJC_CLASS_$_${MODULE_NAME}

 

iOS 개발자 단톡방에서도 간간히 이 내용들에 대해서 질문하는 분들이 계셨지만, 해답은 없었던 것 같습니다.

제가 의심하던 문제들로부터 해결 방법을 발견해서 공유합니다.

제가 생각하는 오류의 원인을 말씀드리자면 Cocoapods 이 M1 을 네이티브로 지원하지 않아서 발생하는 문제라고 생각합니다.

 

해결 방법은 아래와 같습니다. Xcode 를 로제타로 실행하면 됩니다.

로제타로 실행 후 시뮬레이터로 빌드 시 문제 없이 실행됩니다.

 

Xcode 를 로제타에서 실행하면 됩니다.

 

하지만 아무래도 M1 의 퍼포먼스를 완벽하게 누릴 수 없기에 저 같은 경우엔 필요한 경우에만 시뮬레이터를 사용하기 위해 동일한 버전의 Xcode 를 두 벌 가지고 Rosetta Xcode, Universal Xcode 를 별도로 두고 사용하려 합니다.

 

로그인 - Apple

 

idmsa.apple.com

 

 


2022.08.01 업데이트

Xcode 를 로제타로 사용하게되면 M1 의 성능을 발휘할 수 없으니 손해가 많습니다.

시뮬레이터만 로제타로 사용하는 방법이 있습니다.

 

https://darth-vader.tistory.com/11?category=839750 

 

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

회사 프로젝트를 CocoaPods 와 SPM 을 사용하는 환경에서 Tuist + Dependencies 를 사용하는 환경으로 이주를 했습니다. 이주를 하며 많은 이슈가 발생했었는데, 그 중에 하나 해결하기 어려웠던 이슈가

darth-vader.tistory.com

 

CocoaPods 를 사용하는 경우 Podfile 에 EXCLUDED_ARCHS": "arm64" 하도록 작성해주셔야 합니다.