매주 Windows나 Linux 환경에서 Capacitor 앱을 iOS용으로 빌드, 테스트 및 출시할 수 있는지 묻는 분들이 계십니다. 솔직히 말씀드리면, 몇 가지 예외를 제외하고는 거의 모든 것이 가능합니다. 이 페이지는 각 작업별 macOS 필요 여부와 그에 따른 대안을 정리한 가이드입니다.
전체 작업 목록
| 작업 | macOS가 필요한가요? | Windows 또는 Linux에서 수행하는 방법 |
|---|---|---|
| 앱을 작성하고 브라우저에서 실행 | 아니요 | 모든 에디터, 모든 OS 지원 |
| Apple Developer Program 등록 | 아니요 | 브라우저 |
| App ID 및 App Store Connect 레코드 생성 | 아니요 | 브라우저 |
| 배포 인증서 | 아니요 | OpenSSL 또는 인증서 생성기 |
| 프로비저닝 프로파일 | 아니요 | Apple Developer 포털 |
| App Store Connect API 키 | 아니요 | App Store Connect 웹사이트 |
cap add ios, cap sync ios |
아니요 | Capacitor CLI, CocoaPods 경고는 정상입니다 |
| IPA 컴파일 및 서명 | 예 | Capgo 빌드 클라우드에서 Xcode 실행 |
| TestFlight에 업로드 | 네, 일반적으로 그렇습니다 | Capgo 빌드는 API 키를 사용하여 업로드됩니다 |
| App Store 심사 제출 | 아니요 | App Store Connect 웹사이트 |
| 테스트를 위해 iPhone에 설치 | 아니요 | TestFlight 앱 또는 ad hoc IPA 링크 |
| 출시 후 업데이트 푸시 | 아니요 | Capgo Live Updates |
| iOS Simulator | 예 | 대체 불가; 실제 iPhone 사용 권장 |
| iOS Safari Web Inspector | 예 | 원격 로깅, Android Chrome DevTools(웹 레이어용) |
| 네이티브 크래시 디버깅용 Xcode debugger | 예 | 필요할 때만 Mac을 시간 단위로 대여하세요 |
수정 Info.plist, 권한, 아이콘 |
아니요 | 텍스트 및 이미지 파일 포함 ios/ |
| 네이티브 iOS code를 포함한 Capacitor 플러그인 추가 | 아니요 | 설치, cap sync ios, 클라우드 빌드 |
| 커스텀 Swift code 작성 | 부분적으로 | 모든 에디터에서 수정 가능하며, 컴파일 에러는 클라우드 빌드 로그에서 확인하세요 |
컴파일에 macOS가 필요한 이유
Apple은 iOS SDK를 xcodebuild 및 codesign macOS 전용으로만 제공하며, 라이선스상 Apple 하드웨어에 종속되어 있습니다. 스토어 승인이 가능한 IPA를 생성할 수 있는 공식적인 Linux 또는 Windows 툴체인은 존재하지 않습니다. 연구 목적으로 Linux에서 iOS를 크로스 컴파일하는 프로젝트가 있긴 하지만, 코드 서명이 되지 않아 App Store Connect에서 거부됩니다. 이것이 바로 모든
해당 기기를 확보하는 세 가지 방법:
- 머신을 확보하는 세 가지 방법: Mac을 구매합니다.
- 간단하지만, Apple이 최소 Xcode 버전을 높일 때마다 업데이트가 필요합니다. 2026년 4월부터는 Xcode 26이 요구되며, 이는 최신 macOS를 필요로 합니다. 클라우드에서 Mac을 대여합니다.
- 완전한 제어가 가능하지만, 유지 관리 부담이 크고 빌드 여부와 상관없이 시간당 비용이 발생합니다. You send the project, it returns a signed IPA or uploads it. Capgo Build is this option, maintained with the current Xcode so the Apple deadline is not your problem.
Mac 없이 진행하는 최소한의 워크플로우
# once
bunx cap add ios
bunx @capgo/cli@latest build init --platform ios
# every native release
bun run build
bunx cap sync ios
bunx @capgo/cli@latest build request com.example.app --platform ios --build-mode release
# every web-only change
bunx @capgo/cli@latest bundle upload --channel production
첫 번째 블록은 프로젝트를 생성하고 서명 자격 증명을 저장합니다. 두 번째는 서명된 빌드를 생성하여 TestFlight로 전송합니다. 세 번째는 웹 변경 사항에 대해 Native Build 과정을 완전히 건너뜁니다.
상세 가이드: Windows 환경에서 및 Linux 환경에서.
Keychain Access 없이 인증서 관리하기
가장 까다로운 부분입니다. 실제로는 OpenSSL 명령어 세 번과 브라우저 페이지 두 개면 충분합니다:
openssl genrsa -out ios_distribution.key 2048
openssl req -new -key ios_distribution.key -out ios_distribution.csr -subj "/emailAddress=you@example.com/CN=Your Name/C=US"
# upload the CSR in the Apple Developer portal, download distribution.cer
openssl x509 -in distribution.cer -inform DER -out distribution.pem -outform PEM
openssl pkcs12 -export -inkey ios_distribution.key -in distribution.pem -out ios_distribution.p12 -legacy
그 다음 포털에서 App Store provisioning profile을 만들고 App Store Connect에서 API 키를 생성합니다. iOS 인증서 및 provisioning profile 완벽 이해 모든 유형과 오류를 상세히 다룹니다.
Simulator 없이 테스트하기
실제 iPhone을 사용하세요. 클라우드 빌드가 완료되면 몇 분 안에 TestFlight에 빌드가 올라가며, 내부 테스터는 Beta App Review를 거치지 않아도 됩니다. 팀 외부 기기의 경우, 다음 명령어로 ad hoc 빌드를 요청하세요: --ios-distribution ad_hoc --output-upload 링크를 공유하세요. 이 테스트 가이드 는 Safari 없이 디버깅하는 방법을 포함하여 모든 단계를 다룹니다.
Native code 및 플러그인
커뮤니티 플러그인을 추가하는 것은 bun add 및 cap sync ios; Swift code는 클라우드에서 컴파일됩니다. 커스텀 플러그인을 위해 직접 Swift 코드를 작성할 때도 모든 에디터에서 작업이 가능합니다. 다만 자동 완성이나 즉각적인 컴파일 피드백은 제한되므로, 네이티브 코드는 최소화하고 클라우드 디버그 빌드로 빠르게 컴파일하며 스트리밍되는 Xcode 로그로 에러를 확인하는 방식이 실용적입니다. --ai-analytics 는 빌드 실패 원인을 이해하기 쉬운 언어로 진단해 줍니다.
Mac 대여가 여전히 정답인 경우
- 로그만으로는 원인을 알 수 없어 Xcode 디버거가 꼭 필요한 네이티브 크래시가 발생했을 때.
- 매일 Swift 코드를 수정하고 업데이트하는 플러그인 개발자.
- Xcode의 Signing UI를 한 번쯤 확인하여 구조를 파악하고 싶은 첫 App Store 설정 단계.
일반적인 Capacitor 팀에게 이 작업들은 매주 발생하는 일이 아닙니다. 이런 상황이 발생할 때 Mac을 한 시간 대여하는 것이 개발자마다 Mac을 구매하는 것보다 훨씬 저렴합니다.
관련 설정 가이드
- Windows 환경의 Capacitor 개발
- Linux 환경의 Capacitor 개발
- Windows WSL2를 이용한 Capacitor 개발
- Windows 및 Linux에서 Android Live reload 사용하기
- Android Studio 없이 Android release build 만들기
요약
Windows 또는 Linux에서의 Capacitor는 디자인, code, Android, 인증서, TestFlight 및 App Store 제출 과정을 다룹니다. 컴파일 단계만 Apple 전용이며, 이는 Capgo Build가 처리합니다. 웹 레이어에 Live Updates를 사용하면 Mac이 전혀 없는 팀도 Android와 동일한 주기로 iOS를 배포할 수 있습니다.