[iOS] Could not find module 'PulseUI' for target 'x86_64-apple-ios-simulator'; found: arm64-apple-ios-simulator

sun02·2025년 6월 24일

Error

목록 보기
5/6

자주 직면하는 에러의 원인 및 해결 방법에 대해 작성합니다.


때때로 실제 기기에서는 빌드가 잘 되지만 시뮬레이터에서만 빌드가 실패하는 경우가 있습니다.
이러한 현상의 원인 및 해결 방법에 대해서 작성해보겠습니다.



1. Error Message

Could not find module 'PulseUI' for target 'x86_64-apple-ios-simulator'; 
found: arm64-apple-ios-simulator

위 에러 메시지는 다음을 의미합니다:

PulseUI는 x86_64 시뮬레이터(인텔 아키텍처)용 모듈은 제공하지 않고,
arm64 시뮬레이터(Apple Silicon 아키텍처)용 모듈만 제공한다

iOS 라이브러리는 보통 xcframework 형식으로 배포되며,
xcframework 안에는 여러 플랫폼/아키텍쳐에 대응하는 binary slice들이 포함되어 있습니다.

예를 들면:

PulseUI.xcframework =
├── iOS 실기기용 (arm64)
└── iOS 시뮬레이터용 (arm64 시뮬레이터 전용)

따라서 현재 빌드 중인 시뮬레이터가 x86_64(Intel) 기반이라면,
그에 맞는 slice가 존재하지 않기 때문에 Xcode는 모듈을 찾지 못하고 빌드에 실패하게 됩니다.

즉, 위 에러는 Xcode가 Intel 시뮬레이터용 모듈을 찾고 있지만,
PulseUI는 Apple Silicon 시뮬레이터용(arm64) 모듈만 제공하고 있기 때문에 발생하는 것입니다.



2. 그런데 나는 ARM64 시뮬레이터로 빌드하고 있어 🥹


Apple Silicon 시뮬레이터(arm64)를 선택해서 빌드했음에도,
Xcode가 x86_64 아키텍처로 빌드하려고 시도하는 경우가 있습니다.

그 이유는 대개 다음과 같습니다:


Excluded Architectures에 arm64가 포함된 경우

Target > Build Settings > Excluded Architectures 항목을 확인해보세요.

위와 같이 설정되어 있다면,
Xcode는 시뮬레이터 빌드 시 arm64 아키텍처를 제외하게되고
대신 x86_64로 빌드하게 됩니다.

따라서 PulseUI 같은 arm64 전용 모듈은 사용할 수 없게 되어
에러가 발생하는 것입니다.

다음과 같이 추가되어 있다면 arm64를 삭제해주세요

그리고 해당 설정이 텍스트로 남아있을 수도 있어서

'Pods > Target Support Files > Pods - 프로젝트이름' 경로에서

  • Pods-프로젝트.debug.xcconfig
  • Pods-프로젝트.release.xcconfig

내에 EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 가 추가되어있는지 확인하고, 있다면 삭제해주세요.

그러면 이제 시뮬레이터에서도 정상적으로 빌드에 성공할거에요!



3. 그런데 나 ARM64를 추가한 적이 없어 😱


여기서부터 소름.. 이 아니구

직접 설정하지 않았는데도 arm64가 제외되어 있다면?

범인은 보통... CocoaPods입니다.


💡 CocoaPods가 arm64 제외 설정 추가하는 이유

만약 CocoaPods를 통해 라이브러리를 받았다면
직접 설정하지 않았더라도, CocoaPods가 arm64를 자동으로 추가했을 수 있습니다.

왜냐하면 예전에는 Apple Silicon 시뮬레이터(arm64)와 호환되지 않는 SDK들이 많았기 때문에
CocoaPods가 자동으로 arm64를 제외하는 설정을 넣는 경우가 있었다고 하더라구요

혹은, 사용 중인 라이브러리 자체에 arm64를 제외하는 설정이 추가되어 있을 수도 있어요:

s.pod_target_xcconfig = {'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64'}

위와 같이 해당 라이브러리의 개발자가 podspec에 arm64 제외 설정을 추가해 놓았을 수도 있어요.



이런 자동 설정을 방지하고 싶다면, Podfile 하단에 아래 스크립트를 추가하면 됩니다!

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = ''
    end
  end
end

0개의 댓글