Google Play에 앱 15개를 하루에 만들었습니다 — 새 앱 생성 주간 한도는 7일 롤링이고, 16번째에서 막힙니다
10월 23일 Play 콘솔에서 새 앱을 만들다 16번째에 "주간 한도에 도달했습니다"가 떴고, 닷새 동안 재시도가 전부 막혔습니다. 달력 주가 아니라 7일 롤링이라는 추정이 10월 30일에 맞아떨어져 그날 15개를 만들고 선언·등록정보·AAB까지 제출했습니다. 15개는 이틀 뒤 전부 라이브됐습니다. 한 탭의 숨은 프레임으로 콘솔을 돌린 방법, 제출 직전 AAB를 다시 빌드해야 했던 이유, 사이트 배포가 사흘 멈춘 사고, AdMob 스토어 연결을 앱당 15초로 줄인 레시피를 적었습니다
Read in English Fifteen New Apps on Google Play in One Day — the Weekly App-Creation Limit Is a 7-Day Rolling Window, and It Stops You at Number 16
10월 말에 Google Play에 올릴 앱이 한꺼번에 쌓였습니다. 게임 허브 9종 중 Play에 아직 없던 4종, 허브에 들어갈 신작 12종, 문제은행 7,200문항으로 만든 자격증 앱 7종, 그리고 퀴즈 4종. 합치면 27개입니다. 이 글은 그중 15개를 10월 30일 하루에 만들어 제출하고 11월 2일에 전부 라이브로 받은 기록입니다. 중간에 Play 콘솔의 한도 하나와 제 실수 둘이 있었습니다.
16번째에서 막혔습니다
10월 22일에 게임 허브 5종을 Play에 새 앱으로 만들었습니다. 23일에는 카드 게임 3종과 신작 7종을 만들었습니다. 여기까지 15개. 신작 여덟 번째를 만들려고 하자 콘솔이 이렇게 답했습니다.
새 앱 생성의 주간 한도에 도달했습니다. 다음 주에 다시 시도해 주세요.
API 응답은 429였습니다. 한도가 15개라는 것도, “주간”이 무엇을 뜻하는지도 문서에서 찾지 못했습니다. 24일(금), 25일(토), 26일(월), 27일(화) 전부 같은 문구였습니다. 26일 월요일에도 막힌 시점에서 달력 주는 아니라고 봤습니다. 남은 가설은 7일 롤링, 즉 지난 7일 동안 만든 앱이 15개면 막히고 가장 오래된 것이 7일을 넘기면 그만큼 풀린다는 것이었습니다. 이 가설이 맞으면 22일 생성분 5개가 29일에, 23일 생성분 10개가 30일에 풀립니다.
30일에 시도했더니 15개가 들어갔고 16번째(자격증 허브)에서 다시 429가 났습니다. 7일 롤링이 맞았습니다. 그래서 남은 5개(자격증 허브, 퀴즈 4종)는 11월 6일 이후입니다.
한도를 기다리는 닷새가 헛되지는 않았습니다. 그 사이에 만들 앱의 순서를 정했고(허브 4종 → 신작 5종 → 자격증 7종 → 퀴즈 4종), AdMob 앱과 광고 단위, AAB, 스토어 문안과 그래픽을 전부 준비해 두었습니다. 30일에는 “만들기”만 하면 되는 상태였습니다.
하루에 15개를 만드는 방법
Play 콘솔에는 새 앱을 만드는 API가 없습니다. 등록정보·이미지·AAB·데이터 보안은 API로 되지만, 앱 생성과 콘텐츠 선언 9종, 스토어 설정, 국가 선택, 검토 제출은 웹 화면에서만 됩니다. 앱 하나에 화면 전환이 서른 번쯤이라 15개면 450번입니다. 10월 23일에는 7개를 브라우저 자동화로 하나씩 눌렀는데, 화면마다 브라우저를 한 번씩 부르는 구조라 앱 하나에 수십 번을 오가야 했습니다.
30일에는 방법을 바꿨습니다. 콘솔 탭 하나 안에 같은 출처의 숨은 프레임을 열고, 그 안에서 페이지를 넘기며 값을 채웁니다. 페이지 전환과 저장이 프레임 안에서 끝나니 브라우저를 부르는 횟수가 앱당 몇 번으로 줄고, 프레임을 여러 개 띄우면 앱 여러 개를 한 탭에서 동시에 진행할 수 있습니다. 결과적으로 15개를 만들고 선언·스토어 설정·등록정보(영어와 한국어)·국가 178개·프로덕션 AAB·검토 제출까지 마치는 데 하루가 걸렸습니다.
그 과정에서 확인한 것 몇 가지입니다.
- 콘솔은 Trusted Types로
eval을 막습니다. 스크립트를 파일로 받아 실행할 수 없어서, 실행할 코드를 통째로 넣어야 합니다. 대신 로컬 서버에서 JSON·PNG·AAB를fetch로 가져오는 것은 됩니다. 12MB짜리 AAB도DataTransfer로 파일 입력에 넣으면 올라갑니다. - 스크린샷 업로드 버튼은 칸이 차면 주변 문구가 바뀝니다. 문구로 버튼을 찾던 첫 대기열은 저장이 전부 실패했습니다. “마지막 ‘애셋 추가’ 버튼”으로 바꾸고 나서 됐습니다.
- 스토어 설정의 연락처 칸은 이제 값 세터와 이벤트만으로 저장됩니다. 이전 기록에는 “키 입력이 필요하다”고 적혀 있었는데, 그 사이 바뀌었습니다. 새로고침해서 남아 있는 것을 확인했습니다.
- 금융·건강 선언 페이지는 늦게 뜹니다. 체크박스를 못 찾고 넘어간 앱이 있어서 한 번 더 돌았습니다.
- 국가를 저장한 직후에는 ‘새 버전 만들기’가 잠깐 비활성입니다. 기다렸다가 눌러야 합니다.
- 제출 직후 게시 개요를 다시 열어 “검토 중인 변경사항”을 확인했는데, 한 앱(복불복)은 제출이 빠져 있었습니다. 확인 단계가 없었다면 그 앱만 일주일 뒤에 발견했을 겁니다.
실수 하나: 제출 직전에 AAB를 다시 빌드해야 했습니다
신작 5종의 AAB는 10월 23일에 빌드해 둔 것이었습니다. 그 뒤 일주일 동안 소스가 바뀌었습니다. 참가자 수를 숫자로 바로 치는 기능, 초성 퀴즈의 나가기 처리, 사다리타기의 결과 목록 정리 같은 것들입니다. 자격증 6종도 10월 25일 빌드 뒤에 공용 틀이 바뀌어 있었습니다(크로스프로모 v3와 1원 프로모션 안내).
제출 전에 “AAB 안에 든 웹 번들이 지금 소스인가”를 확인하지 않았다면, 라이브 첫 버전부터 이미 고친 결함을 그대로 내보낼 뻔했습니다. 11종을 현재 소스로 다시 빌드하고 서명 지문을 대조한 뒤 올렸습니다. 한도 때문에 생긴 일주일의 간격이 만든 함정입니다. 다음부터는 AAB 빌드를 “만들기 직전”으로 미룹니다.
검토는 이틀이었습니다
10월 30일 밤에 제출한 15개는 10월 31일에 IARC 등급 메일 15건이 왔고, 11월 2일에 공개 페이지 15개가 전부 200이었습니다. 같은 달 23일에 제출한 7종은 둘(농구 슛·매일 맞춤법)이 하루 만에, 나머지 다섯이 나흘 만에 라이브됐습니다. 15개를 한 번에 냈다고 더 오래 걸리지는 않았습니다.
라이브 직후에 한 일은 14개를 같은 날 낸 글에서 정한 순서 그대로입니다.
- 27개 로케일 등록정보를 6종에 적용했습니다. 나머지 9종은 한국어 전용으로 판단해 영어와 한국어 둘만 둡니다. 세계지리는 앱 자체가 한국어뿐이고, 초성 퀴즈는 한국어 낱말 게임이고, 하루상식은 6과목 중 5과목이 한국어 전용이고, 자격증 6종은 한국 자격시험입니다.
- 벌칙 룰렛 설명에 “9개 언어 지원”이라고 적혀 있었는데 앱은 4개 언어(한국어·영어·일본어·중국어)였습니다. 영어·한국어 문구와 번역본을 고쳤습니다. 일본어 등록정보를 다시 쓸 때 픽셀 탁구에서 본 것과 같은 종류의 틀림입니다.
- 한국어 그래픽 9종을 올렸습니다. 올리는 스크립트가 한국어 피처 그래픽 자리에 영문판을 넣고 있던 것을 이번에 고쳤습니다. 지난달 스크린샷 27개 언어가 영어를 물려받던 문제의 작은 재발입니다.
- 앱 레지스트리에 Play 출시 표시를 넣고 사이트를 다시 만들었습니다. 그런데 여기서 두 번째 실수가 났습니다.
실수 둘: 사이트 배포가 사흘 멈췄습니다
11월 1일부터 3일까지 사이트 배포가 네 번 실패해 있었습니다. 레지스트리가 신작 5종을 “Play 출시됨”으로 바꾸면서 사이트가 그 다섯 앱의 Play 안내 페이지를 만들었는데, 페이지가 참조하는 앱 아이콘 파일이 없었습니다. 빌드 뒤 링크 검사기가 깨진 이미지를 잡아 배포를 멈췄고, 그 사이에 푸시한 다른 수정들도 함께 라이브에 오르지 못했습니다.
푸시가 됐다고 배포가 된 것이 아니라는 것은 알고 있었는데, 확인을 빼먹었습니다. 원인은 GitHub Actions의 실행 기록에 붙은 주석(annotations)에 파일 이름까지 그대로 적혀 있었습니다. 아이콘 15개(신작 5·자격증 6·퀴즈 4)를 넣고 다시 배포해 복구했습니다. 레지스트리에서 Play 출시 표시를 켜기 전에 아이콘부터 넣는 것을 순서에 박았습니다.
AdMob 스토어 연결을 앱당 15초로
광고 앱은 Play 라이브 뒤 AdMob 콘솔에서 “스토어 추가”를 해야 광고가 정상 상태가 됩니다. 이 작업은 API가 없어서 콘솔에서만 됩니다. 15개를 하려니 방법을 정리할 수밖에 없었습니다.
앱의 설정 화면으로 바로 들어가는 URL을 열고, 검색 칸에 Play 스토어 URL을 통째로 넣습니다. 패키지 이름으로 검색하면 승인 직후에는 0건이 나오는데 URL로는 잡힙니다. 검색 버튼은 일반 버튼이 아니라 머티리얼 버튼이라 텍스트로 찾고, 결과 행을 눌러 저장하면 “인증이 완료되었습니다”가 뜹니다. 이 순서를 스크립트 하나로 만들어 15개를 돌렸고 앱당 15초였습니다. AdMob API에서 연결된 스토어 정보가 Play 패키지와 일치하는 것까지 확인했습니다.
숫자로 정리
| 항목 | 값 |
|---|---|
| 10월 30일 생성·제출 | 15개 (허브 4·신작 5·자격증 6) |
| 16번째 시도 | 429, 주간 한도 |
| 검토 → 라이브 | 10/30 제출, 10/31 등급 메일, 11/2 공개 페이지 15개 200 |
| 로케일 확장 | 6종 29개 로케일, 9종 한국어 전용 |
| 제출 전 AAB 재빌드 | 11종 |
| 사이트 배포 실패 | 11/1~3, 4회 |
| AdMob 스토어 연결 | 15개, 앱당 15초 |
| 출시 마감 게이트 통과 | 15종 중 12종 (나머지 3종은 토스 쪽 푸시 항목) |
| 남은 Play 신규 등록 | 5개, 11월 6일 이후 |
출시 마감 게이트는 소개글·영상·스토어 동영상 등 마케팅 항목까지 포함합니다. 자격증 6종과 신작 5종, 카드놀이 허브는 통과했고, 행운연구소·하루상식·복불복은 Play 쪽은 끝났지만 토스 쪽 푸시 동의 항목이 남아 통과하지 못했습니다. 그건 Play와는 다른 이야기라 따로 적겠습니다.
이번에 올라간 15개의 소개글은 카드놀이·행운연구소·하루상식·복불복, 세계지리·사다리타기·제비뽑기·벌칙 룰렛·초성 퀴즈, 요양보호사·미용사·조리기능사·제과제빵·지게차 굴착기·운전면허 학과에 있습니다.
배운 것
- Play 새 앱 생성 한도는 15개, 7일 롤링입니다. 달력 주가 아닙니다. 한 번에 많이 낼 계획이면 생성 날짜를 적어 두고 7일 뒤 자리를 계산하는 편이 낫습니다. 이 수치는 10월 22일~30일 제 계정에서 관찰한 것이고 공식 문서에서는 찾지 못했습니다.
- 한도를 기다리는 동안 AAB를 미리 빌드하지 않습니다. 만들기 직전에 빌드합니다. 그 사이의 수정이 빠집니다.
- 콘솔 자동화는 숨은 프레임 하나로. 페이지마다 브라우저를 부르는 방식은 7개에 하루, 프레임 안에서 넘기는 방식은 15개에 하루입니다.
- 레지스트리 출시 표시보다 아이콘이 먼저. 그리고 푸시 뒤에는 배포 성공을 확인합니다.
- AdMob 스토어 연결은 Play URL로 검색. 패키지 이름 검색은 승인 직후 0건입니다.
만든 앱들은 GAMES와 APPS에 있고, 일부는 브라우저에서 바로 해볼 수 있습니다. 소식은 이 블로그와 인스타그램(@fadongkwon.soft) (새 창에서 열림)에서 전해드립니다.
이 글의 한도 수치와 콘솔 동작은 2026년 10월 22일~11월 3일에 제 개발자 계정에서 직접 관찰한 것입니다. Play 콘솔의 한도와 화면 구조는 바뀔 수 있으니 같은 작업을 하신다면 최신 상태를 먼저 확인해 주세요.
