본문 바로가기
튜토리얼

Windows에서 Capacitor와 Capgo Build로 iOS 앱 빌드하기

Windows 개발 머신에서 실제 iOS 바이너리 배포하기: 웹 앱을 Capacitor로 감싼 다음, Mac 없이 Capgo Build로 컴파일하고 서명해 TestFlight에 제출하세요.

Capacitor와 Capgo로 Windows에서 iOS 앱 빌드하기 Capgo 블로그 일러스트

전통적으로 iOS 앱을 빌드하려면 Xcode가 필요하고, Xcode가 필요하다는 건 macOS가 필요하다는 뜻입니다. 팀 전체가 Windows나 Linux를 쓰거나 Mac 빌드 머신을 유지하고 싶지 않다면 이 제약은 꽤 번거롭습니다.

다음 조합: Capacitor (native iOS 프로젝트 생성용) 및 Capgo 빌드 (클라우드에서 컴파일 및 서명 수행) Windows 워크스테이션에서 iOS 빌드와 TestFlight 제출을 할 수 있습니다.

이 가이드에서는 팀에서 잘 통하는 실용적인 워크플로우를 소개합니다:

  • 일반적인 웹 프로젝트처럼 Windows에서 개발하세요.
  • 유지하세요 ios/ 레포지토리에 (네이티브 상태를 재현할 수 있도록).
  • 실행 cap sync 로컬에서 (웹 빌드 결과물을 iOS 프로젝트로 복사할 수 있도록).
  • Capgo Build로 iOS 클라우드 빌드를 실행하세요.

실제로 무엇을 어디서 빌드하나

Capacitor 앱에는 두 가지 별도의 “빌드”가 있습니다:

  • 웹 빌드 (JS/HTML/CSS): Windows에서 로컬로 처리합니다.
  • Native Build (Xcode 아카이브, 서명, 업로드): Capgo Build가 클라우드의 Mac 하드웨어에서 처리합니다.

이 분리가 핵심입니다: Capgo Build는 네이티브 프로젝트를 컴파일하지만, 웹 에셋이 이미 동기화되어 있다고 가정합니다 ios/.

사전 요구사항

  • 동작하는 Capacitor 앱 (프레임워크는 아무거나 됩니다).
  • Apple Developer 계정.
  • 업로드할 앱의 App Store Connect 접근 권한 (TestFlight/App Store 제출용).
  • Capgo 계정과 API 토큰 (CAPGO_TOKEN).

1) Capacitor 앱 생성 또는 준비 (Windows)

이미 웹 앱이 있다면 Capacitor 단계로 건너뛰세요.

Vite 사용 예시:

bun create vite@latest my-app
cd my-app
bun install

Build는 정적 에셋을 생성해야 합니다 (Vite에서는 dist/ 기본값입니다):

bun run build

2) Capacitor 및 iOS 플랫폼 추가

Capacitor 설치:

bun add @capacitor/core @capacitor/ios
bun add -d @capacitor/cli

iOS 플랫폼 폴더 초기화 및 생성:

bunx cap init
bunx cap add ios

이제 다음과 같은 ios/ 디렉토리가 생성됩니다. 이를 git에 커밋하세요. Capgo Build는 내부에 있는 파일을 컴파일합니다. ios/따라서 버전 관리되고 재현 가능해야 합니다.

3) 빌드 전 항상 웹 에셋을 iOS로 Sync 하세요

웹 앱을 변경할 때마다 Windows에서 다음 과정을 수행하세요:

bun run build
bunx cap sync ios

cap sync 빌드된 웹 에셋을 네이티브 iOS 프로젝트로 복사합니다 (Capgo Build가 실제로 컴파일할 파일들).

4) Capgo CLI 설치 및 인증

Capgo Build는 Capgo CLI를 통해 트리거됩니다. bun를 사용하려면 bunx:

bunx @capgo/cli@latest login

또는 shell/CI 환경 변수로 토큰을 설정하세요:

export CAPGO_TOKEN="your_api_key_here"

5) 클라우드 빌드용 iOS Signing 구성

iOS를 빌드하려면 Signing 자료가 필요합니다:

  • Apple Distribution 인증서 (".p12) 및 비밀번호
  • 프로비저닝 프로파일 (.mobileprovision)
  • App Store Connect API 키 (AuthKey_XXXXXX.p8) 및 메타데이터 (Key ID, Issuer ID, Team ID)

이 파일들을 아직 생성해야 한다면, Capgo 문서를 참고하세요:

가장 쉬운 방법은 다음과 같습니다: 한 번만 생성/내보내기(보통 사용 가능한 Mac, 팀원, 또는 일시적 대여를 사용)한 후, 이후 모든 빌드에서 Windows에서 재사용하는 것입니다.

파일을 로컬에 확보했다면, Capgo Build를 위해 저장하세요:

bunx @capgo/cli@latest build credentials save \
  --platform ios \
  --certificate ./cert.p12 \
  --p12-password "password" \
  --provisioning-profile ./profile.mobileprovision \
  --apple-key ./AuthKey.p8 \
  --apple-key-id "KEY123" \
  --apple-issuer-id "issuer-uuid" \
  --apple-team-id "team-id"

팁: CI에서는 자격 증명 파일을 base64 인코딩하여 시크릿으로 저장하고, 런타임에 디코딩한 뒤 동일한 명령을 실행하세요 build credentials save 명령어만 실행하면 됩니다.

6) Windows에서 iOS Build 실행하기

앱 폴더에서:

bun run build
bunx cap sync ios
bunx @capgo/cli@latest build com.example.app --platform ios --build-mode release

터미널에서 실시간 로그를 확인할 수 있습니다. App Store Connect 키가 설정되어 있다면, Capgo Build가 생성된 빌드를 TestFlight에 자동으로 제출합니다.

7) 빠르게 반복하기: 웹 변경 사항은 Live Updates로

Capgo Build는 네이티브 변경 사항에 사용됩니다:

  • Capacitor 플러그인 추가/제거
  • 네이티브 권한 변경
  • 아이콘/스플래시 변경
  • Capacitor 업데이트
  • Swift/Objective-C 코드 변경

일상적인 UI 수정과 JavaScript 수정에는 보통 Live Update (OTA)를 사용하므로 매번 네이티브 바이너리를 다시 빌드할 필요가 없습니다.

권장하는 팀 워크플로우는 다음과 같습니다:

  • 빈번한 웹 변경 사항에는 Live Updates를 사용하세요.
  • 네이티브 변경이 필요할 때 가끔 Capgo Build를 사용하세요.

Windows에서 흔히 겪는 문제 (및 해결 방법)

  • 잊기 쉬운 사항 cap sync: iOS 빌드에 UI 변경 사항이 반영되지 않았다면, 웹 앱은 빌드했지만 동기화하지 않았을 가능성이 큽니다. ios/.
  • 커밋하지 않음 ios/: Capgo Build는 네이티브 프로젝트를 컴파일합니다. 폴더가 git에 없거나 빌드 컨텍스트에 포함되지 않으면, 빌드는 앱을 재현할 수 없습니다.
  • 네이티브 재빌드 없이 플러그인 변경: 플러그인 추가는 네이티브 변경입니다. 이후 Capgo Build 실행(및 스토어 제출)을 계획하세요.

요약

Windows에서는 Xcode를 실행할 수 없지만, 다음과 같이 Windows에서 iOS 앱을 출시할 수 있습니다:

  1. Capacitor로 웹 앱을 래핑하세요 (ios/ 레포지토리에서).
  2. 웹 에셋을 로컬에서 빌드한 다음, cap sync.
  3. Capgo Build를 사용해 CLI에서 iOS 바이너리를 컴파일하고 서명한 뒤 제출하세요.

Capacitor와 Capgo Build로 Windows에서 iOS App 빌드하기 이어가기

사용 중이라면 Windows에서 Capacitor와 Capgo Build로 iOS 앱 빌드하기 CI/CD 자동화를 계획하려면, 다음을 연결하세요 Capgo CI/CD 설정하기 Capgo CI/CD의 제품 워크플로우용, Capgo Native Build Capgo Native Builds의 제품 워크플로우용, Capgo 연동 서비스 Capgo Integrations의 제품 워크플로우용, CI/CD 통합 CI/CD Integration의 구현 세부 사항은, 그리고 GitHub Actions 연동 GitHub Actions Integration의 구현 세부 사항을 참고하세요.

Capacitor 앱용 Live updates

웹 레이어 버그가 라이브 상태라면, 앱 스토어 승인을 며칠씩 기다리지 말고 Capgo를 통해 수정 사항을 배포하세요. 네이티브 변경 사항은 정상 리뷰 절차를 그대로 따르는 반면, 사용자는 백그라운드에서 업데이트를 받습니다.

블로그 최신 글

Capgo는 정말 프로페셔널한 모바일 앱을 만드는 데 필요한 최고의 인사이트를 제공합니다.