본문으로 건너뛰기

명령줄에서 Xcode 시뮬레이터 런타임 설치하기

Installing simulator runtimes from the command line

www.donnywals.com

핵심 요약

  1. Xcode에서 iOS 런타임 다운로드가 멈추면 `xcodebuild -downloadPlatform iOS -architectureVariant arm64`로 arm64 런타임을 지정해 설치할 수 있다.
  2. `xcodebuild`는 명령줄에서 선택된 Xcode 버전을 사용하므로, `xcode-select -p`로 현재 경로를 확인하고 필요하면 `xcode-select -s <path>`로 변경해야 한다.
  3. 여러 플랫폼 런타임을 한 번에 내려받으려면 `xcodebuild -downloadAllPlatforms -architectureVariant arm64`를 사용할 수 있으며, 원문은 명령을 sudo로 실행하라고 안내한다.

도입

Xcode 27 베타 설치 후 watchOS 런타임은 정상적으로 내려받았지만, iOS 런타임은 Xcode의 다운로드 정보 확인 창에서 진행되지 않았다. Xcode를 재설치하고 Mac을 재부팅해도 해결되지 않아 명령줄 설치 방법을 찾았고, `xcodebuild`에서 플랫폼과 아키텍처 변형을 지정하는 방식으로 iOS 런타임을 설치했다.

상세 요약

Xcode 선택과 기본 다운로드

Xcode에서 iOS 런타임 다운로드가 진행되지 않을 때 명령줄에서 xcodebuild를 사용할 수 있다. 기본 명령은 다음과 같다.

xcodebuild -downloadPlatform iOS

이 명령은 명령줄에서 선택된 Xcode 버전을 사용해 지정한 플랫폼의 런타임을 내려받는다. 현재 선택된 Xcode 경로는 다음과 같이 확인한다.

xcode-select -p

원하는 버전이 선택되어 있지 않다면 xcode-select -s <path>로 경로를 바꾼다. 글에서 제시한 Xcode 베타 경로는 /Applications/Xcode-beta.app이다. 작성자는 이 명령들을 sudo로 실행하라고 안내한다.

iOS 다운로드에서 발생한 오류

기본 명령을 실행했을 때 작성자는 다음 메시지를 확인했다.

Finding content...
Automatically resolved architecture variant for platform iOS as 'universal'.
No matching downloadable found for platform: iOS
No downloadable was found for iOS.

오류 메시지는 xcodebuild가 iOS용 universal 런타임을 찾고 있지만 해당 다운로드 항목을 찾지 못했음을 보여줬다. 같은 방식으로 watchOS와 visionOS를 설치했을 때는 universal이 아니라 arm64 런타임을 가져오는 것을 확인했다. 이를 바탕으로 iOS에서도 arm64 변형을 지정해 시도했다.

아키텍처 변형 지정하기

iOS 런타임 다운로드에 arm64를 지정하는 명령은 다음과 같다.

xcodebuild -downloadPlatform iOS -architectureVariant arm64

작성자는 이 명령으로 iOS 런타임을 설치할 수 있었다고 설명한다. 따라서 기본 다운로드가 universal 변형을 찾다가 실패하는 상황에서는 -architectureVariant arm64를 추가해 실행하는 것이 글에서 제시한 해결 방법이다.

모든 플랫폼 런타임을 한 번에 내려받는 명령도 함께 제시한다.

xcodebuild -downloadAllPlatforms -architectureVariant arm64

실행 전에는 사용할 Xcode 버전이 선택되어 있는지 확인해야 한다. 원문은 각 플랫폼별 런타임 설치 및 일괄 설치 명령을 안내하지만, 다운로드 과정의 추가 설정이나 다른 아키텍처 변형에 대해서는 설명하지 않는다.

결론

핵심은 런타임 다운로드 명령에 사용할 Xcode 버전과 아키텍처 변형을 확인하는 것이다. 기본 iOS 다운로드가 universal 런타임을 찾다가 실패하는 경우 arm64를 명시하면 설치할 수 있다. 여러 플랫폼을 대상으로 할 때도 같은 아키텍처 변형을 지정하는 명령이 제시되어 있다.