맥 없이 아이폰·안드로이드 앱 출시하기

Ship Capacitor Apps without a Mac

무료로 내려받기 (zip, 14KB)

압축 안에 든 것

  • capacitor-app-release-no-mac/SKILL.md
  • capacitor-app-release-no-mac/files/ios-release.yml

압축을 풀어 내 프로젝트의 .claude/skills/ 폴더에 넣으면 돼요. 무료이고, 고쳐 쓰셔도 됩니다.

한 줄 소개

윈도우 PC 하나로 웹앱을 앱으로 감싸고, 아이폰 빌드는 GitHub Actions에 맡겨 TestFlight와 App Store 심사까지 가는 순서와, 심사에서 거절당하는 함정을 미리 막는 체크리스트입니다.

이런 분께 맞아요

  • 맥이 없는데 아이폰 앱을 내야 하는 분
  • 이미 웹앱(React, Next.js, Vite 등)이 있고 Capacitor로 앱을 만들려는 분
  • iOS 빌드는 성공했는데 앱이 빈 화면이거나 켜자마자 꺼지는 분
  • App Store 심사에서 같은 이유로 몇 번째 거절당하고 있는 분

쓰면 이렇게 달라져요

전: 빌드가 초록불이라 바로 올렸는데, 심사관은 빈 화면만 보고 거절. 무엇이 빠졌는지 몰라서 다시 빌드하고 다시 기다립니다.

후: 업로드 전에 워크플로가 만들어진 앱을 직접 열어 보고, 빠진 게 있으면 거기서 멈춥니다.

- name: Verify the archived app bundle
  run: |
    APP="$RUNNER_TEMP/App.xcarchive/Products/Applications/App.app"
    test -f "$APP/GoogleService-Info.plist" || { echo "::error::설정 파일이 안 들어감"; exit 1; }
    test -d "$APP/public/_next"
    # 개인정보 매니페스트는 하위 폴더까지 찾기
    find "$APP/Frameworks/<SDK>.framework" -iname 'PrivacyInfo.xcprivacy' | grep -q .

그리고 제출 전에 체크리스트로 "Firebase에 iOS 앱 등록했나", "인앱결제 상품마다 심사에 추가했나", "심사에 걸린 빌드가 방금 그 빌드가 맞나"를 확인합니다.

쓰는 법

  1. 내려받기
  2. 프로젝트의 .claude/skills/capacitor-app-release-no-mac/에 넣기 (files/ios-release.yml은 내 저장소의 .github/workflows/에 복사)
  3. 클로드 코드에 이렇게 말하기: "capacitor-app-release-no-mac 스킬대로 이 웹앱을 iOS·안드로이드 앱으로 출시 준비해 줘. 워크플로 빈칸 채울 값은 나한테 물어봐."
무료로 내려받기 (zip, 14KB)

우리가 실제로 써 본 이야기

저희 통역 앱 '소머즈'는 맥도 아이폰도 없이 iOS 출시를 시작했습니다. 첫 빌드는 TestFlight에 잘 올라갔지만 심사에서 거절됐고, 앱 파일을 직접 열어 보니 하위 경로가 붙어 빈 화면이 뜨고, 설정값이 비어 있고, 설정 파일이 빠져 있는 등 전부 "CI에서만 깨지는" 문제였습니다. 빌드를 스무 번 넘게 다시 만들며 하나씩 고쳤고, 고칠 때마다 그 검사를 워크플로에 넣었습니다. 두 번째 앱 '불릿닷지'는 다섯 번째 시도에 승인됐는데, 마지막 거절 원인은 코드가 아니라 Firebase에 iOS 앱을 등록하지 않아 애플 로그인이 막힌 것이었습니다. 앱 등록만 하고 같은 빌드를 다시 제출해 통과했습니다. 이 스킬의 체크리스트는 이렇게 실제로 걸렸던 항목들로 만들었습니다.

자주 묻는 질문

Q. 정말 맥이 하나도 없어도 되나요?
빌드·서명·업로드는 GitHub Actions의 macOS 러너가 해 줍니다. 다만 실기기 확인용 아이폰은 한 대 있어야 합니다. 로그인·결제는 실기기에서만 제대로 확인되고, 심사에서 실기기 화면 녹화를 요청받기도 합니다. 내 기기가 아니어도 TestFlight로 설치할 수 있습니다.
Q. 비용은 얼마나 드나요?
애플 개발자 회비(매년)와 구글 Play 등록비(처음 한 번)가 듭니다. GitHub Actions는 공개 저장소면 무료이고, 비공개 저장소는 macOS 러너 시간이 무료 사용량에서 더 빨리 줄어드니 GitHub 요금 안내를 확인하세요.
Q. React Native나 Flutter에도 쓸 수 있나요?
워크플로의 앞부분(웹 빌드, cap sync)은 Capacitor 전용입니다. 인증서·프로비저닝·업로드 부분과 심사 체크리스트는 다른 도구에도 그대로 참고할 수 있습니다.
스킬 뱅크의 다른 스킬 보기 →