M1 과 인텔 Architecture 차이에 의한 오류 정리

Uno·2022년 4월 21일
1

TIL

목록 보기
4/5

M1 과 인텔 Architecture 차이에 의한 오류 정리

#0_jou/2022/04/21
#1_input/blog
#2_out/swift
#1_input/swift/errornote

에러 발생 상황

  1. Cocoapod 혹은 Swift Package Manager 를 통해서 라이브러리를 프로젝트에 추가하는 상황에서 시뮬레이터가 동작하지 않는 상황
  2. 특정 프레임워크를 가져올 때, 시뮬레이터가 동작하지 않는 상황
    -> 정리하면, 빌드는 되나 Simulator 에서 동작 안하고 실기기에서는 동작되는 상황입니다.

오류 메시지

Building for iOS Simulator, but the linked framework ‘000Framework.framework’ was built for iOS
= 해당 프레임 워크각 iOS에서만 빌드가 되도록 처리되어 있다.

OBJCCLASS$”~”,referenced from
(아마 뒤에 이런 내용도 있을 것이다. ld: symbol(s) not found for architecture arm64)
= arm 64 아키텍쳐로 된 무언가를 찾을 수 없다는 내용

Building for iOS simulator, but linking in dylib built for iOS, file ‘ ‘framework for architecture arm 64
= 해당 프레임 워크는 arm 64로 되어 있다.

에러 원인

  • m1 맥 / iOS == arm 64
  • intel == x86_64

Simulator 는 해당 맥에 해당하는 아키텍쳐를 따라갑니다.

그러므로 m1 맥에서 시뮬레이터는 arm 64 이므로, 프레임 워크가 arm 64만 지원한다면, 시뮬레이터에서 잘 동작합니다.

하지만 intel 맥 시뮬레이터는 x86_64 이므로, 프레임워크가 arm64만 지원한다면, 시뮬레이터 동작하지 않을 수 있습니다.

역으로도 마찬가지입니다.

해결방안

Project > Build Setting > Architectures > Excluded Architectures 에 가서
각각의 scheme에
“Any iOS Simulator SDK” : “arm64” 를 추가합니다.
이 의미는, arm 64로 시뮬레이터가 동작하지 않도록 처리하는 코드입니다.

참고자료

profile
iOS & Flutter

0개의 댓글