← 기술 블로그로

Xcode / Simulator / Instruments가 macOS 전용인 이유

Xcode와 iOS Simulator—Apple 도구 체인은 macOS가 전제
빌드·시뮬레이션·프로파일링—세 워크플로, macOS 티켓 한 장. 설계된 구조입니다.

iOS 앱을 개발해야 하는데 손에 있는 건 Windows나 Linux 머신뿐인 개발자라면, 한 번쯤 이런 검색을 해봤을 겁니다. "Xcode Windows 설치하는 법", "Simulator를 Docker에서 돌리는 법", "Instruments만 Linux에서 쓸 수 없나". 결론부터 말하면, Xcode · iOS Simulator · Instruments 세 도구는 기술적으로도, 라이선스 측면에서도 macOS에서만 동작합니다. 왜 그런지, 그리고 Windows/Linux 팀이 현실적으로 어떻게 대응할 수 있는지를 순서대로 설명합니다.

이 글은 iOS 개발을 해야 하지만 Mac이 없는 개발자, Windows 노트북이 사내 표준인 팀, Linux CI 환경에서 iOS 빌드 파이프라인을 구성해야 하는 DevOps 엔지니어를 위한 내용입니다. macOS VM의 한계를 파악한 뒤, 클라우드 Mac을 두 번째 빌드 머신으로 활용하는 것이 2026년 현재 가장 현실적인 선택지입니다.

1) 세 가지 도구와 하나의 OS

Apple이 iOS 개발에 필수로 제공하는 도구는 세 가지입니다. Xcode(IDE + 컴파일러 + 링커 + App Store Connect 연동), iOS Simulator(Apple Silicon 위에서 동작하는 가상 디바이스), 그리고 Instruments(Time Profiler, Allocations, Network 등 성능 분석 도구 모음). 이 세 도구는 macOS 내부 API와 깊게 결합되어 있어서, 독립적으로 Windows나 Linux에 포팅하는 것은 기술적으로 거의 불가능합니다.

Apple 공식 Xcode 페이지에는 "Xcode runs on macOS"라고 명시되어 있으며, 각 릴리스별로 지원하는 최소 macOS 버전이 지정됩니다. 예를 들어 Xcode 16은 macOS 14.5 이상이 필요합니다. 이는 인스톨러의 편의 문제가 아니라, 의존하는 프레임워크와 커널 기능의 버전 요건 자체입니다.

도구주요 의존성타 OS에서 동작하지 않는 이유
Xcode / xcodebuildmacOS SDK, Metal, CoreMLSDK가 macOS 전용. Clang은 Linux도 가능하지만 링커·Archive는 Apple 전용 바이너리
iOS SimulatorHypervisor.framework, Apple SiliconHypervisor.framework는 macOS 커널에서만 제공되는 API
InstrumentsDTrace, ktrace, OSLogDTrace 프로브와 ktrace는 macOS/Darwin 전용 커널 API

세 도구 모두 macOS의 Darwin 커널XPC·launchd·dyld 스택 위에서 동작합니다. Linux 커널에는 이에 대응하는 API가 없으며, 에뮬레이션으로는 성능과 서명 검증 모두 무너집니다.

2) Simulator는 QEMU가 아니다

흔한 오해 중 하나가 "iOS Simulator는 QEMU 같은 범용 에뮬레이터니까 Linux에 포팅할 수 있지 않냐"는 것입니다. 실제로는 전혀 다릅니다.

iOS Simulator는 Apple Silicon 위에서 동작하는 네이티브 macOS 프로세스입니다. 시뮬레이트할 iOS ARM 바이너리는 macOS의 네이티브 ARM 엔진이나 Rosetta 2로 직접 실행되며, QEMU처럼 바이너리를 하나하나 변환하는 계층은 거의 없습니다. Apple이 대신 제공하는 것이 Hypervisor.framework——macOS 커널이 제공하는 가상화 프레임워크입니다.

Hypervisor.framework 문서를 보면, 이는 macOS에만 존재하는 저수준 API입니다. KVM(Linux)이나 Hyper-V(Windows)에 해당하는 Apple 버전이 다른 OS용으로는 제공되지 않으며, 오픈소스 재구현도 현실적이지 않습니다.

또한 Simulator의 UI 서브시스템은 macOS의 CoreGraphicsMetal을 직접 호출합니다. 이를 다른 OS에 포팅하려면 Apple의 비공개 그래픽 API를 완전히 재구현해야 합니다. 실용적으로 불가능한 작업입니다.

핵심 포인트: iOS Simulator의 "시뮬레이트"는 ARM CPU 명령어를 x86으로 변환하는 것이 아닙니다. macOS의 가상화 및 그래픽 API에 의존하는, Apple Silicon 네이티브 macOS 프로세스입니다. Linux에서의 QEMU 포팅과는 근본적으로 다른 이야기입니다.

3) 코드 서명 체인과 Keychain

iOS 앱을 TestFlight나 App Store에 제출하려면 Apple의 코드 서명 체인을 통과해야 합니다. 이 체인은 Developer Portal → 프로비저닝 프로파일 → Keychain → codesign 명령 → Archive → App Store Connect 제출 순서로 이어집니다.

이 흐름의 핵심인 codesignmacOS 전용 바이너리입니다. Apple 코드 서명 문서는 macOS 보안 프레임워크(Security.framework)와의 통합을 전제로 합니다. Linux나 Windows에는 Apple의 Keychain API가 없어서, 비밀 키를 안전하게 보관하고 codesign에 전달하는 경로 자체가 존재하지 않습니다.

서명 단계필요한 컴포넌트macOS 외 환경의 문제
인증서 관리Keychain Access + Security.frameworkLinux/Windows에 Apple Keychain API 없음
프로비저닝 프로파일Developer Portal API + XcodeXcode 없이는 UDID 매칭 불가
Archive + Export 실행xcodebuild archive + ExportOptions.plistxcodebuild는 macOS 전용 바이너리
App Store Connect 제출altool / xcrun notarytoolxcrun은 macOS 전용, Linux 바이너리 없음

Fastlane match나 xcbeautify 같은 서드파티 도구도 결국에는 xcodebuildcodesign을 호출합니다. 이 도구들이 macOS 전용인 이상, 파이프라인의 최종 단계는 반드시 macOS 위에서 실행되어야 합니다.

4) Instruments는 커널 API를 직접 사용한다

Instruments가 수집하는 데이터——CPU 타임, 메모리 할당, 네트워크 레이턴시, Metal 렌더링 프레임——는 모두 커널이 제공하는 트레이스 정보입니다. Apple이 사용하는 것은 DTrace(Sun Microsystems에서 유래한 커널 프로브 프레임워크)와 Apple이 독자적으로 확장한 ktrace/kdebug API입니다.

OSLog / Unified Logging 문서를 봐도, 이들은 Darwin 커널과 XPC에 의존합니다. Linux에는 eBPF라는 유사한 메커니즘이 있지만, Instruments의 UI와 데이터 포맷은 Darwin 전용으로 설계되어 있어 호환이 되지 않습니다.

실제 트러블슈팅에서 중요한 Time ProfilerLeaks 도구는 task_threads()mach_vm_read() 같은 Mach API를 사용합니다. 이는 macOS(Darwin) 고유의 커널 인터페이스로, Linux POSIX 호환 계층에는 존재하지 않습니다. Instruments를 Linux에 포팅한다는 건 실질적으로 Darwin 커널의 일부를 Linux에서 재구현하는 것을 의미합니다.

5) 라이선스와 비즈니스 제약

기술적인 이유 외에도, Apple Software License Agreement(ASLA)가 macOS 이외 환경에서의 사용을 명시적으로 금지하고 있습니다. macOS Sequoia 사용권 계약에는 macOS를 Apple 브랜드 하드웨어 이외에서 실행하는 것을 금지하는 조항이 포함되어 있습니다.

이것이 Hackintosh(비 Apple 하드웨어에 macOS 설치)나 VMware ESXi 등의 macOS VM이 법적으로 그레이존에 있는 이유입니다. App Store 제출에 사용했을 경우, Apple에 의해 계정이 정지될 위험이 있습니다. 상업적으로 합법적으로 macOS를 제공할 수 있는 것은 Apple의 MACE(Mac-as-a-Cloud-Extension) 프로그램에 참여한 사업자뿐입니다.

비즈니스 관점에서 Apple은 iOS 에코시스템을 닫힌 상태로 유지함으로써 하드웨어·소프트웨어·서비스를 수직 통합하고 App Store 수익을 지키고 있습니다. 규제 당국이 강제로 개입하지 않는 한, 이 구조가 바뀔 가능성은 낮습니다.

6) 이 상황은 바뀔까

"Apple이 언젠가 Xcode를 Windows에 출시하지 않을까"라는 기대는 있지만, 2026년 현재 변화의 징후는 거의 없습니다. Apple이 움직일 가능성이 있는 시나리오로는 EU 규정(DMA)에 의한 사이드로딩 의무화가 강화되거나, 주요 플랫폼이 macOS 요건을 우회하는 독자 툴체인을 광범위하게 확산시키는 경우를 생각해볼 수 있습니다.

그러나 Apple Silicon의 성능 우위가 지속되는 한, Xcode를 타 OS에 개방하는 것은 Apple의 하드웨어 판매에 불리합니다. WWDC 2025·2026에서도 Xcode의 Windows/Linux 지원을 시사하는 발표는 없었습니다.

변화가 있다면 단계적인 형태——예를 들어 CI용 xcodebuild의 Linux 버전을 한정 제공하는 등——가 될 수 있습니다. 하지만 그렇더라도 Simulator·Instruments·Keychain의 세 가지는 당분간 macOS 전용인 상태가 유지될 것입니다.

7) Windows/Linux 팀이 선택할 수 있는 현실적인 방법

macOS가 필요하다는 걸 알았다면, 실제로 어떻게 할지가 문제입니다. 선택지는 크게 세 가지입니다.

선택지적합한 케이스주의사항
팀에 Mac 한 대 두기소규모 팀, 상시 오피스 근무인원 증가 시 자산 관리 복잡. 재택·출장 시 사용 불가
GitHub Actions macOS 러너CI 자동화 (PR·릴리스)인터랙티브 Simulator 작업·프로파일링에는 부적합
클라우드 Mac mini 렌탈Windows/Linux 팀 전반, 원격 개발, 스팟 이용네트워크 필수. Git/레지스트리와 같은 리전 권장
  1. 팀에 Mac 한 대 두기: 소규모 팀에는 간단하지만, 인원이 늘면 자산 관리와 라이선스 관리가 복잡해집니다. 재택이나 원격 근무 인원이 그 Mac을 쓸 수 없다는 문제도 있습니다.
  2. GitHub Actions의 macOS 러너 사용: CI 빌드·테스트·Archive에는 적합하지만, 인터랙티브한 Simulator 작업이나 Archive의 시행착오에는 맞지 않습니다. 자체 macOS 러너 구성법도 참고하세요.
  3. 클라우드 Mac mini 렌탈: SSH/VNC로 접근할 수 있는 전용 Apple Silicon 머신을 일 단위·월 단위로 빌립니다. Windows나 Linux 메인 머신은 그대로 두고, Xcode·Simulator·Instruments만 클라우드로 옮기는 구성입니다.

리모트 Mac에서 Archive를 실행하는 전형적인 커맨드입니다.

ssh build@cloud-mac \
  'cd ~/MyApp && \
   xcodebuild \
     -scheme MyApp \
     -configuration Release \
     -destination generic/platform=iOS \
     archive \
     -archivePath ~/build/MyApp.xcarchive && \
   xcodebuild \
     -exportArchive \
     -archivePath ~/build/MyApp.xcarchive \
     -exportOptionsPlist ExportOptions.plist \
     -exportPath ~/build/ipa'

이 명령어는 Windows/Linux 터미널에서 SSH로 실행할 수 있습니다. Archive와 서명 처리는 모두 클라우드 Mac 측에서 완결되므로, 로컬 머신에 인증서를 보관할 필요가 없습니다. TCO 및 비용 비교·Xcode 트러블슈팅도 참고하세요.

8) 자주 묻는 질문

Q1: Xcode를 공식적으로 Windows에서 실행하는 방법이 있나요?
없습니다. Apple 공식 Windows 포트는 존재하지 않습니다. 합법적인 방법은 macOS가 동작하는 Apple 인증 하드웨어나 승인된 클라우드 서비스를 이용하는 것입니다.

Q2: Linux에서 xcodebuild만 실행하는 건 가능한가요?
불가능합니다. xcodebuild는 macOS 전용 바이너리이며, 의존하는 Xcode 툴체인 전체가 macOS 프레임워크에 의존합니다. Linux에는 포팅되지 않았습니다.

Q3: macOS VM을 사용하면 되지 않나요?
VMware ESXi나 KVM에서 macOS를 게스트로 실행하는 것은 Apple 라이선스에 위반됩니다. 상업적으로 합법적인 선택지는 Apple 프로그램에 참여한 사업자가 제공하는 베어메탈 Mac 렌탈 서비스입니다. VM과 클라우드 Mac 비교를 참고하세요.

Q4: iOS Simulator 없이 테스트하는 방법이 있나요?
실기(iPhone/iPad)가 있다면 Simulator 없이도 동작 확인은 가능합니다. 다만 복수 OS 버전 확인이나 UI 회귀 테스트 자동화에는 Simulator가 필수이며, 이를 위해서는 macOS가 필요합니다.

Q5: 클라우드 Mac에서 Instruments를 사용할 수 있나요?
VNC(화면 공유)로 클라우드 Mac의 GUI에 접근하면 Instruments를 그대로 사용할 수 있습니다. VPN·VNC 환경이 있다면 로컬 실기를 클라우드 Mac에 연결해 프로파일링하는 것도 가능합니다.

Q6: GitHub Actions macOS 러너로는 부족한가요?
CI 빌드·테스트·Archive에는 충분합니다. 다만 인터랙티브 디버깅이나 Instruments를 이용한 프로파일링, Simulator 수동 조작에는 적합하지 않습니다. 이 경우 전용 클라우드 Mac mini가 실용적입니다.

Q7: Xcode 버전 관리는 어떻게 하면 되나요?
Xcode Release Notes에서 SDK 요건을 확인하고, App Store 제출에 필요한 최소 Xcode 버전을 팀 전체에서 통일하세요. 클라우드 Mac은 이미지 업데이트로 여러 버전 전환도 쉽습니다.

정리하면, Xcode와 iOS Simulator·Instruments가 macOS 전용인 이유는 기술(Hypervisor.framework, DTrace, Mach API)·라이선스(ASLA)·비즈니스(수직 통합) 세 계층이 서로 얽혀 있습니다. 가까운 미래에 변화할 가능성은 낮으며, Windows/Linux 팀에게 현실적인 해결책은 결국 "어떻게 macOS 환경에 접근할 것인가"라는 질문으로 귀결됩니다.

소규모 팀부터 대규모 CI까지, Nuvcloud는 전용 M4 Mac mini 렌탈로 Windows/Linux 환경의 iOS 빌드 파이프라인을 보완합니다. 요금 플랜 확인하거나, 먼저 하루 렌탈로 시작해보세요.

클라우드 Mac mini로 오늘부터 iOS 빌드 시작

Windows나 Linux 메인 환경은 그대로, 전용 M4 Mac mini를 SSH/VNC로 언제든지 사용할 수 있습니다. Xcode·Simulator·Instruments를 완전히 활용할 수 있는 합법적인 환경을, 일 단위·월 단위로 이용하세요.

요금 확인하기 · Nuvcloud 홈페이지

LIMITED 요금제