오랜만에 글을 씁니다.
저는 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 를 로제타로 실행하면 됩니다.
로제타로 실행 후 시뮬레이터로 빌드 시 문제 없이 실행됩니다.
하지만 아무래도 M1 의 퍼포먼스를 완벽하게 누릴 수 없기에 저 같은 경우엔 필요한 경우에만 시뮬레이터를 사용하기 위해 동일한 버전의 Xcode 를 두 벌 가지고 Rosetta Xcode, Universal Xcode 를 별도로 두고 사용하려 합니다.
2022.08.01 업데이트
Xcode 를 로제타로 사용하게되면 M1 의 성능을 발휘할 수 없으니 손해가 많습니다.
시뮬레이터만 로제타로 사용하는 방법이 있습니다.
https://darth-vader.tistory.com/11?category=839750
CocoaPods 를 사용하는 경우 Podfile 에 EXCLUDED_ARCHS": "arm64" 하도록 작성해주셔야 합니다.
'Xcode' 카테고리의 다른 글
[Xcode] NaverMaps 를 Carthage 로 받는 방법 (Feat. Tuist) (0) | 2022.08.01 |
---|---|
[Xcode] M1 'cyclone' is not a recognized processor for this target 해결법 (0) | 2022.07.27 |
[Xcode] libSwiftPM.sylib 플러그인을 사용하는 동안 Xcode이(가) 예기치 않게 종료되었습니다. (0) | 2021.04.05 |
[Xcode] Breakpoint 사용하기 (3) - NSLog (0) | 2020.07.07 |
[Xcode] Breakpoint 사용하기 (2) - LLDB (1) | 2020.07.05 |