Community코딩 & 개발github.com

Google Play:从注册开发者账号到提审

Unity 게임을 서명된 AAB로 빌드하여 Google Play에 출시하는 과정을 안내합니다. 개발자 계정 등록부터 앱 생성, 콘텐츠 및 상품 정보 입력, 클로즈드 테스트 심사, 12명의 테스터를 14일 동안 모아 최종 버전을 제출하기까지의 전 과정을 다룹니다.

Google Play:从注册开发者账号到提审란 무엇인가요?

이 스킬은 Unity로 개발된 게임을 Google Play 스토어에 출시하는 전체 과정을 단계별로 안내하는 AI 어시스턴트입니다. 개발자 계정 등록, 앱 생성, 상품 정보 설정, 클로즈드 테스트 심사 제출, 12명의 테스터를 14일 동안 모집한 후 최종 프로덕션 버전을 심사에 제출하는 것까지 포함합니다. 특히 2023년 11월 13일 이후에 등록된 개인 계정의 경우 공식 출시 전에 최소 12명의 실제 테스터가 14일 연속으로 클로즈드 테스트에 참여해야 하는 Google Play의 정책을 정확히 반영합니다. 또한 Play 게임 서비스(로그인, 업적, 리더보드, 클라우드 저장), AdMob 광고, 인앱 리뷰/업데이트, 인앱 구매 등 주요 플랫폼 기능 통합을 지원하며, 심사 거절, PIN 코드 수령, 은행 계좌 등 수익 창출 관련 문제도 해결합니다. 이 스킬은 Claude Code, Cursor, Codex 등 다양한 AI 에이전트 플랫폼에서 사용할 수 있도록 설계되었으며, 상세한 SKILL.md 문서와 참고 자료를 기반으로 동작합니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/BaronCyrus/ShipMyGame/tree/HEAD/skills/ship-google-play

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Google Play: 개발자 계정 등록부터 심사 제출까지

목표: 클로즈드 테스트 버전을 먼저 '심사 중' 상태로 만들고(실제로는 당일 통과 가능), 개인 계정의 테스트 요구 사항에 따라 테스터를 모은 후 프로덕션 버전을 '심사 중' 상태로 만듭니다.

먼저 할 일: ship-my-game의 1~4단계가 완료되었는지 확인하세요(진행 파일, 채널, 진단, 브라우저). 완료되지 않았다면 먼저 읽으십시오. 이 채널의 진행 상황은 진행 파일의 ## google-play 섹션에 기록됩니다.

작업을 시작하기 전에 먼저 사용자에게 이 다섯 가지를 물어보고, 답변을 진행 파일의 [실측: 문진 목록]에 기록하세요.

  1. Play 개발자 계정이 있습니까? 개인인가요, 조직인가요? 언제쯤 등록했습니까?
  2. 어느 국가/지역에 거주합니까? 이는 판매자 계정이 대금을 수취할 수 있는지 결정합니다 공식.
  3. 어떻게 수익을 창출할 계획입니까: 광고, 인앱 구매, 유료 다운로드, 아니면 수익 창출을 하지 않습니까? 이는 공개되는 개인 정보와 거래자 신원 선언 방식에 영향을 미칩니다.
  4. 개인정보처리방침은 어떤 공개 https URL에 게시되어 있습니까? 스토어에 공개할 연락처 이메일은 무엇입니까?
  5. AdMob 계정이 있습니까? Play 개발자 계정과 동일한 Google 계정을 사용하는 것이 좋습니다.

그런 다음 사용자에게 세 가지를 알립니다:

  1. 테스트 요구 사항: 2023-11-13 이후에 등록된 개인 계정은 공식 출시 전에 최소 12명의 실제 테스터가 연속 14일 동안 클로즈드 테스트에 참여해야 하며, 그 후 프로덕션 버전을 신청할 수 있습니다(심사는 보통 7일 이내) 공식. 따라서 클로즈드 테스트 통과부터 공식 출시까지 최소 2주 이상이 소요됩니다.

  2. 공개되는 정보:

    • 개인 계정의 경우 법적 전체 이름, 국가, 개발자 이메일이 공개됩니다.
    • Google Play에서 수익 창출(유료 앱, 인앱 구매)을 시작하면 전체 주소가 공개됩니다.
    • '거래자'로 선언된 개인 계정의 경우 전화번호와 주소도 공개됩니다.

    등록 전에 onboarding.md 1절에서 자세히 설명하세요.

  3. AAB 업로드: AAB는 보통 수십 MB이며, 브라우저 도구는 한 번에 10MB만 업로드할 수 있습니다. 따라서 첫 번째 AAB는 사용자가 웹 페이지에 직접 끌어다 놓아야 합니다. 이후에는 Developer API를 통해 업로드할 수 있습니다(본 저장소에서는 실측되지 않음). 자세한 내용은 automation.md를 참조하세요.

사용자 작업

작업단계
등록: US$25 결제, 신분증, 이메일 및 전화 인증 코드, Android 실물 기기 인증(Play Console 모바일 앱으로 QR 코드 스캔), 거래자 신원 선언P1
동의 확인: 《개발자 배포 계약》; 앱 생성 시 '개발자 프로그램 정책', '미국 수출 법률' 선언; IARC 이용약관; PGS 및 Google Cloud 약관('사용' 클릭 시); 《Google API 서비스: 사용자 데이터 정책》P1, P3, P6
AAB를 웹 페이지의 업로드 상자에 끌어다 놓기P4, 이후 업데이트 시마다(API를 사용하지 않을 때)
'심사를 위해 N개 변경사항 제출': 사용자가 '제출'이라고 말하면 사용자가 직접 클릭; 권한 시스템에 의해 차단되면 사용자가 클릭P4, P7
Google 그룹 생성 시 로봇이 아닙니다 확인; Reddit 등 커뮤니티에 게시물 작성 및 상호 테스트; 자신의 계정으로 테스트 참여P5
실제 기기에서 사운드, PGS 로그인 및 전반적인 조작감 확인P2, P6
OAuth 동의 화면의 '앱 게시', PGS의 '게임 프로젝트 게시'P6
AdMob 등록: 국가, 약관, 로봇이 아닙니다 확인, 결제 및 세금 정보P6
개인정보처리방침, app-ads.txt를 사용자 웹사이트에 게시하는 데 동의; 호스팅 비용이 발생하면 사용자가 결정P2, P6
대금 수취: AdMob의 신분증, PIN 코드, 수취 방식, 미국 세금 정보; Play의 판매자 결제 프로필 및 은행 계좌출시 후

엔지니어링 요구 사항

ship-my-game 3단계에서 이 표를 기준으로 차이점을 나열하세요. 세부 사항은 references/build.md를 참조하세요.

항목요구 사항근거
Unity대상 API 36을 위해서는 6000.0.46f1+ 또는 2022.3.62f1+ 필요; 16KB 페이지를 위해서는 6000.0.38f1+ 또는 2022.3.56f1+, Burst 1.8.21+ 필요. 실측 버전은 6000.6.5f1 사용공식; [실측]
모듈Android Build Support(OpenJDK, SDK, NDK 포함)—
targetSdk36(2026-08-31부터; 연장 마감일 2026-11-01은 이미 지남). minSdk는 24 이상, 실측은 26공식; [실측]
아키텍처 및 형식IL2CPP, ARM64 + ARMv7, AAB; 심볼 테이블을 AAB에 포함[실측], scripts/ShipAndroidBuild.cs에서 설정
16KB 메모리 페이지네이티브 라이브러리(Unity 모두 포함)를 포함하는 패키지는 16KB 정렬되어야 하며, 빌드 후 확인공식
서명업로드 키는 scripts/make_upload_keystore.sh로 생성하여 프로젝트 외부에 보관; 앱 서명 키는 Google이 관리[실측]
사운드시작되는 모든 씬에는 'AudioListener'가 하나만 존재해야 함[실측-실패] 두 게임 모두 이 때문에 소리 없이 출시된 적 있음
광고클로즈드 테스트 기간에는 항상 Google 테스트 광고 ID 사용, 광고를 받을 수 없을 때는 진입점 숨김[실측]
인앱 구매Unity IAP ≥ 4.14.0 또는 5.x(Play 결제 라이브러리 ≥ 8)공식
개인정보처리방침공개 https 웹페이지, Play 콘솔과 게임 내부에 모두 링크 배치; 템플릿 templates/privacy-policy.en.html공식; [실측]
민감한 권한병합된 매니페스트에 사용하지 않는 사진, 동영상, 연락처, 위치 등의 권한이 없어야 함공식

단계

명령어 및 링크의 상대 경로(scripts/…, ../ship-my-game/…)는 이 스킬 디렉토리를 기준으로 합니다. 콘솔 경로는 Play Console 중국어 인터페이스의 원문을 사용합니다.

P1 계정 (이미 있는 경우 완료 기준을 하나씩 확인하며 건너뜀)

  1. https://play.google.com/console 을 열고 페이지를 읽어 개발자 계정 유무와 개인/조직 여부를 판단합니다.
  2. 계정이 없는 경우: 먼저 onboarding.md 1절 '공개되는 정보'를 설명하고, 사용자가 동의하면 등록을 안내합니다. 결제, 신분증, 인증 코드, 기기 인증은 모두 사용자가 직접 수행합니다 공식.
  3. 거래자 신원: 새 계정 생성 시 선언해야 하며('계정 관리 → 계정 세부정보 → 사용자 정보'), 기존 계정은 늦어도 2027-02-01까지 선언해야 합니다. 사용자가 사실에 기반하여 결정하며, 판단 기준과 결과를 설명합니다 공식.
  4. '홈'에서 인증 관련 할 일을 모두 처리하고 'Android 개발자 인증' 상태를 확인합니다(새 앱 생성 시 패키지 이름이 자동으로 등록됨) 공식.

완료 기준:

  • 홈에 완료되지 않은 인증 작업이 없어야 합니다.
  • 진행 파일에 계정 유형, 등록 시간(12명 × 14일 규정 적용 여부 판단), 거래자 신원이 명시되어 있어야 합니다.

P2 엔지니어링, 업로드 키, 첫 번째 AAB

  1. '엔지니어링 요구 사항'에 따라 프로젝트를 수정합니다: scripts/ShipAndroidBuild.cs를 Assets/Editor/에 복사하고, 각 씬의 AudioListener를 확인합니다.
  2. 업로드 키 생성: bash scripts/make_upload_keystore.sh <패키지명>을 실행하고, 사용자에게 ~/.shipmygame/keys/<패키지명>/을 백업하라고 알립니다 [실측].
  3. 빌드: ../ship-my-game/scripts/unity_build.sh <프로젝트 디렉토리> Android ShipAndroidBuild.Aab release -shipVersion 1.0.0 -shipVersionCode 1.
    • [실측]: 이 스크립트는 빈 프로젝트에서 디버그 APK를 생성한 적이 있습니다. 동일한 구성의 빌드 스크립트는 두 게임에서 서명된 AAB를 생성했습니다.
  4. 자가 점검: bundletool을 사용하여 매니페스트(targetSdk 36, 테스트 광고 App ID)를 확인하고, 심볼이 AAB에 포함되었는지, 16KB 정렬을 확인합니다. 명령어는 build.md 4절을 참조하세요.
  5. ShipAndroidBuild.Apk를 사용하여 디버그 APK를 빌드하고, 사용자에게 휴대폰에 설치하여 사운드가 나는지 확인을 요청합니다 [실측: 시뮬레이터는 사운드 확인 불가].
  6. templates/privacy-policy.en.html 템플릿을 사용하여 개인정보처리방침을 생성합니다: 모든 {{플레이스홀더}}를 교체하고, 게임에서 사용하지 않는 AdMob, PGS, 인앱 구매 단락을 삭제합니다. 사용자가 동의하면 공개 https URL에 게시하고, curl로 200 응답을 확인합니다 [실측].

완료 기준:

  • 서명된 AAB가 하나 있고, versionCode와 자가 점검 결과가 진행 파일에 기록되어 있어야 합니다.
  • 사용자가 실제 기기에서 사운드를 확인했습니다.
  • 개인정보처리방침 URL이 200을 반환합니다.

P3 앱 생성, 앱 콘텐츠, 스토어 등록정보

  1. '홈 → 앱 만들기': 이름, 패키지 이름(먼저 '사용 가능 여부 확인' 클릭), 기본 언어, 게임, 무료/유료 입력; 두 가지 선언은 사용자가 체크합니다. 필드별 세부 사항은 console.md 1절 참조 [실측].
  2. 정보 센터의 '게임 설정 완료' 11개 항목을 하나씩 작성합니다: 개인정보 보호정책, 로그인 세부정보, 광고, 콘텐츠 등급, 대상 연령대, 데이터 보안, 정부 앱, 금융 상품 및 서비스, 건강, 카테고리 및 연락처 정보, 상품 세부정보. 답변은 console.md 2절 참조 [실측].
  3. '모니터링 및 개선 → 정책 및 프로그램 → 앱 콘텐츠': 모든 '선언 시작'을 해제합니다. **특히 '광고 ID'**는 11개 항목에 포함되지 않으므로, 작성하지 않으면 심사 제출이 차단됩니다 [실측-실패 → 수정 완료].
  4. '스토어 출시 → 스토어 설정': 카테고리, 최대 5개의 태그, 연락처 정보(웹사이트는 app-ads.txt가 있는 도메인 사용) [실측].
  5. '스토어 출시 → 상품 세부정보': 텍스트, 아이콘, 상단 이미지, 스크린샷, AI 리소스 선언. 다국어는 'AI로 번역 가져오기'를 사용하고, 가져온 후 언어별로 확인합니다. 세부 사항은 listing.md 참조 [실측].

완료 기준:

  • 정보 센터의 '게임 설정 완료' 블록이 완전히 사라져야 합니다.
  • '앱 콘텐츠'에 처리되지 않은 항목이 없어야 합니다.
  • 상품 세부정보 상태가 '심사 제출 가능'이며, 소스 파일이 모두 publish/google-play/에 있어야 합니다.

P4 클로즈드 테스트 초기 출시 (심사 제출 게이트)

  1. '테스트 및 출시 → 테스트 → 비공개 테스트'(기본 트랙 '비공개 테스트 - Alpha'):

    • 국가/지역은 '모두 선택';
    • 테스터는 Google 그룹(권장) 또는 메일링 리스트 중 하나만 선택 가능;
    • 피드백 이메일 입력.

    자세한 내용은 console.md 5절 참조 [실측].

  2. '새 출시 버전 만들기': 먼저 버전 이름과 다국어 버전 설명을 입력하고 '초안 저장'을 클릭합니다. 그런 다음 사용자에게 AAB를 업로드 상자에 끌어다 놓도록 요청하고, 페이지를 폴링하여 '1 (1.0.0)'과 같은 항목이 나타날 때까지 기다립니다 [실측].

  3. '다음' → '확장된 확인 세부정보' 읽기 → '저장' → '출시 개요', 빠른 검사가 완료될 때까지 기다립니다(최대 약 14분). 문제가 있으면 먼저 수정합니다 [실측].

  4. 심사 제출 게이트에 따라 내용을 사용자에게 제시합니다. 사용자가 '제출'이라고 말하면 '심사를 위해 N개 변경사항 제출' → '변경사항 심사 제출'을 클릭합니다. 권한 시스템에 차단되면 사용자가 직접 클릭하도록 합니다. 자세한 내용은 review.md 1절 참조 [실측].

완료 기준:

  • 출시 개요에 '심사 중인 변경사항'이 표시되어야 합니다.
  • 진행 파일에 제출 시간과 예상 소요 시간(실측 10~42분, 공식적으로는 보통 7일 이내), 그리고 결과 확인 위치('출시 개요')가 기록되어야 합니다.

P5 테스터 모집, 14일 기다리기 (개인 계정; P6과 병행 가능)

  1. 심사 통과 후 '테스터' 탭으로 이동하여 복사 버튼의 aria-label에서 두 개의 참여 링크를 가져옵니다 [실측].
  2. templates/testers-recruitment.md를 사용하여 모집 문구를 작성합니다. Google 그룹 생성 시 마지막 로봇이 아닙니다 확인은 사용자가 직접 수행하고, 커뮤니티 게시글도 사용자가 직접 게시합니다 [실측]. review.md 2절을 참조하세요.
  3. 매일 정보 센터의 '프로덕션 출시 권한 신청' 카드를 읽습니다: '현재 N명의 테스터가 M일 연속 참여 중입니다' [실측: 카드 원문].
  4. 피드백에 따라 업데이트를 출시합니다: versionCode를 1 증가시키고, P4의 2~4단계를 수행하거나 automation.md의 API를 사용합니다. 수정 사항을 모아 한 번에 제출하세요. 다시 심사 제출하면 진행 중인 심사가 취소되기 때문입니다 [실측].
  5. '모니터링 및 개선 → 평점 및 리뷰 → 테스트 피드백'의 피드백과 해당 수정 사항을 진행 파일에 기록하여 P7의 설문에 사용합니다 공식.

완료 기준: 카드에 '최소 12명의 테스터', '최소 14일' 두 항목이 모두 체크되어야 합니다. 진행 파일에 피드백 및 수정 기록이 있어야 합니다.

P6 플랫폼 기능 (P5와 병행)

  1. Play 게임 서비스:

    • 콘솔: 구성, OAuth 동의 화면, 사용자 인증 정보(모든 서명 인증서의 SHA-1을 생성해야 함), 업적(최소 10개), 리더보드, 테스터;
    • Unity: scripts/ShipPgsSetup.cs 및 scripts/ShipPlayGames.cs;
    • '앱 게시' 및 '게임 프로젝트 게시'는 사용자가 직접 클릭합니다.

    자세한 내용은 capabilities.md 1절 참조 [실측: 콘솔 구성].

  2. AdMob:

    • 앱 및 광고 단위 생성, scripts/ShipAds.cs(UMP 동의 → 초기화 → 리워드, 전면, 배너);
    • GDPR 메시지 게시, app-ads.txt 준비;
    • 테스트 기간에는 테스트 ID를 사용하고, 공식 출시 후에 스토어를 연결합니다.

    자세한 내용은 capabilities.md 2절 참조 [실측: 콘솔 구성].

  3. 인앱 리뷰, 인앱 업데이트: scripts/ShipPlayReview.cs; 인앱 구매: Unity IAP. 자세한 내용은 capabilities.md 3, 4절 참조 [공식].

  4. 각 기능을 통합할 때마다 데이터 보안 신고와 개인정보처리방침을 동시에 업데이트하고, 다음 버전과 함께 심사에 제출합니다(P4 2~4단계) [실측].

완료 기준:

  • 통합된 각 기능을 사용자가 실제 기기에서 테스트 트랙을 통해 설치하여 검증했습니다.
  • PGS 구성이 게시되었습니다. 데이터 보안 신고와 개인정보처리방침이 기능과 일치합니다.
  • 프로덕션 광고 ID는 진행 파일에만 기록되고 테스트 패키지에는 포함되지 않았습니다.

P7 프로덕션 버전 신청 및 출시 (심사 제출 게이트)

  1. 카드의 세 항목이 모두 체크되면, 먼저 템플릿에 나열된 페이지에서 테스트 데이터를 확인하고, templates/production-access-answers.md를 사용하여 세 부분으로 구성된 설문(총 9문항, 각 서술형 문항은 최대 300자)을 작성하여 사용자에게 항목별로 확인을 요청합니다 [실측].
  2. 심사 제출 게이트에 따라 사용자에게 제시: 설문 답변, 테스터 수 및 일수, 7일 이내 결과 예상. 사용자가 '제출'이라고 말하면 '정보 센터 → 프로덕션 출시 권한 신청'에서 '프로덕션 출시 권한 신청'을 클릭하고, 처음 두 단계에서 '다음', 마지막 단계에서 '적용'을 클릭합니다. 페이지에 '프로덕션 출시 권한 신청을 접수했습니다'라는 메시지가 표시되어야 제출이 완료된 것입니다 [실측]. 진행 파일에 제출 시간을 기록하고, 결과는 이메일과 정보 센터 카드에서 확인합니다.
  3. 승인 후(계정 소유자에게 이메일로 통지), review.md 6절에 따라 프로덕션 버전을 준비합니다:
    • 프로덕션 광고 ID와 App ID로 교체하고, versionCode를 1 증가시킵니다(결과를 기다리는 동안 미리 패키지를 빌드할 수 있으며, 이 패키지는 프로덕션 버전에만 사용합니다);
    • 먼저 PGS 구성을 게시하고, 최소 2시간 후에 게임을 출시합니다;
    • '테스트 및 출시 → 프로덕션 → '새 출시 버전 만들기''.
  4. 심사 제출 게이트를 다시 한 번 수행하여 프로덕션 버전을 심사에 제출하고, 페이지에서 '심사 중' 상태가 되었는지 확인합니다.

완료 기준:

  • 출시 개요에서 프로덕션 버전 항목이 '심사 중인 변경사항' 아래에 표시되어야 합니다.
  • 진행 파일에 제출 시간, 예상 소요 시간 및 확인 위치(출시 개요, 이메일)가 기록되어야 합니다.

대기 기간 및 출시 후

  • 클로즈드 테스트 심사 대기(실측 수십 분): 스토어 자료, PGS 및 AdMob 콘솔 구성을 준비합니다.
  • 14일 대기: 매일 카드에서 인원 수와 일수를 확인합니다. 피드백에 따라 1~2개의 업데이트를 출시합니다. 기능 통합은 이 기간에 수행합니다.
  • 프로덕션 권한 심사 대기(약 7일): 프로덕션 광고 패키지를 빌드하고 체크리스트를 확인합니다(review.md 6절). 스토어 홍보 자료를 준비합니다.
  • 출시 후: AdMob에서 스토어를 연결하고 app-ads.txt 검증을 완료합니다(capabilities.md 2.7절). 클로즈드 테스트 참여자도 프로덕션 버전과 실제 광고를 받게 되며, 테스트 트랙을 중지해도 막을 수 없습니다(review.md 6절). Android vitals에서 충돌률과 ANR을 모니터링합니다. 2027년 2월부터는 메모리 사용량이 평가되며, DEX가 50MB를 초과하는 게임은 코드 최적화가 필요합니다(공식). 업데이트할 때마다 versionCode를 증가시키고, 수정 사항을 모아 한 번에 심사 제출합니다.
  • 대금 수취: AdMob 잔액이 10달러 이상이 되면 신원과 주소를 인증해야 합니다(PIN 코드는 일반 우편으로 발송, 약 3주 소요). 잔액이 100달러 이상이 되면 매월 21일경 결제됩니다. 인앱 구매 수익을 받으려면 먼저 판매자 결제 프로필을 만들고 은행 계좌를 추가해야 하며, 매월 15일부터 전월 수익이 지급됩니다. 자세한 내용은 payouts.md를 참조하세요.
  • 거절 또는 차단 시: review.md 4절 및 troubleshooting.md를 참조하세요.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

관련 스킬