본문으로 건너뛰기

Google Play Store 등록 및 심사 가이드

작성일: 2026-04-06 Last Updated: 2026-04-06 대상: Flutter Mobile App (Android) 공통 참조: ../common/security.md (코드 서명), ../common/ci-cd.md (배포 파이프라인)


목차

  1. Google Play Console 등록
  2. 앱 등록 및 설정
  3. 데이터 안전 섹션
  4. 콘텐츠 등급 (IARC)
  5. 스크린샷 및 그래픽 규격
  6. 테스트 트랙
  7. Google Play Billing
  8. 앱 번들 (AAB) vs APK
  9. 타겟 API 레벨 요구사항
  10. Play Store 정책 핵심
  11. 체크리스트

1. Google Play Console 등록

사전 요구사항

항목상세비용
Google 계정개발자 등록용무료
등록비1회성$25
D-U-N-S 번호조직 계정 시 필수 (2023년~)무료
본인 확인개인: 신분증, 조직: 사업자등록증-

계정 유형

유형요구사항앱 공개 제한
개인신분증 인증20개/년 (신규 계정)
조직D-U-N-S + 사업자등록증제한 없음

권장: 상용 제품은 조직 계정으로 등록. 신규 개인 계정은 연간 앱 공개 수 제한 있음.

등록 단계

단계작업소요 시간
1Google Play Console 접속 (https://play.google.com/console)-
2개발자 계정 생성 + $25 결제즉시
3본인/조직 인증개인: 1-3일, 조직: 5-7일
4앱 생성 (Create app)10분
5스토어 등록정보 입력1-2시간
6콘텐츠 등급, 데이터 안전 작성30분
7빌드 업로드 (AAB)15분
8테스트 트랙 or 프로덕션 제출-
9심사 대기신규: 3-7일, 업데이트: 1-3일

2. 앱 등록 및 설정

스토어 등록정보

필드제한설명
앱 이름30자스토어 표시 이름
짧은 설명80자검색 결과에 표시
전체 설명4,000자상세 설명
앱 아이콘512x512 PNG (32-bit)투명 배경 불가
기능 그래픽1024x500 PNG/JPEG스토어 상단 배너
카테고리최대 1개앱 / 게임 선택 후 세부 카테고리
태그최대 5개관련 태그 선택
연락처 이메일필수공개되는 이메일
개인정보 처리방침 URL필수유효한 URL

앱 생성 시 초기 선택

선택 항목옵션변경 가능
앱/게임App 또는 GameX
유료/무료Free 또는 PaidFree -> Paid 불가
선언광고 포함 여부, 앱 내 구매 여부O

3. 데이터 안전 섹션

개요

Google Play 데이터 안전 섹션은 앱이 수집/공유하는 데이터를 사용자에게 투명하게 공개하는 필수 항목.

데이터 유형

카테고리하위 항목SaaS 앱 해당
위치대략적/정확한 위치기능에 따라
개인 정보이름, 이메일, 주소, 전화번호O
금융 정보결제 수단, 구매 이력O
기기/기타 ID기기 ID, 광고 IDO
앱 활동앱 인터랙션, 검색 기록O
앱 성능크래시 로그, 진단O
메시지이메일, 문자 내용기능에 따라

작성 시 필수 확인 사항

#질문체크
1앱이 사용자 데이터를 수집하는가?
2수집한 데이터를 제3자에게 공유하는가?
3데이터를 전송 중 암호화하는가? (HTTPS)
4사용자가 데이터 삭제를 요청할 수 있는가?
5제3자 SDK (Firebase, Sentry 등)의 데이터 수집을 포함했는가?

Firebase SDK 데이터 수집 (일반적 포함 항목)

Firebase 서비스수집 데이터카테고리
Analytics앱 이벤트, 기기 정보앱 활동, 기기 ID
Crashlytics크래시 로그, 기기 정보앱 성능
Cloud MessagingFCM 토큰, 인스턴스 ID기기 ID
Performance네트워크 요청, 앱 시작 시간앱 성능

데이터 삭제 요청 메커니즘

2024년부터 데이터 삭제 요청 수단 필수 제공.

앱 내 설정 > 계정 삭제
또는
웹: https://myapp.com/account/delete
// 계정 삭제 요청 구현 (Flutter)
Future<void> requestAccountDeletion(WidgetRef ref) async {
final confirmed = await showDialog<bool>(
context: context,
builder: (context) => AlertDialog(
title: const Text('계정 삭제'),
content: const Text(
'계정을 삭제하면 모든 데이터가 영구적으로 삭제됩니다.\n'
'이 작업은 되돌릴 수 없습니다.',
),
actions: [
TextButton(onPressed: () => Navigator.pop(context, false), child: const Text('취소')),
TextButton(
onPressed: () => Navigator.pop(context, true),
style: TextButton.styleFrom(foregroundColor: Colors.red),
child: const Text('삭제'),
),
],
),
);

if (confirmed == true) {
await ref.read(authRepositoryProvider).deleteAccount();
ref.read(authNotifierProvider.notifier).logout();
}
}

4. 콘텐츠 등급 (IARC)

IARC 질문지 작성

Google Play Console > App > Policy > Content rating
질문 분야예시
폭력폭력적 콘텐츠 포함 여부
성적 콘텐츠성인 콘텐츠 포함 여부
비속어욕설, 비속어 포함 여부
약물/알코올관련 콘텐츠 표현 여부
도박실제 돈이 오가는 도박
UGC (사용자 생성 콘텐츠)사용자가 콘텐츠를 생성/공유 가능한지

일반 SaaS 앱 예상 등급

국가/지역예상 등급기준
IARC (글로벌)3+ 또는 7+폭력/성적 콘텐츠 없음 기준
한국 (GRAC)전체이용가-
미국 (ESRB)E (Everyone)-
유럽 (PEGI)3-

UGC 포함 앱: 콘텐츠 등급이 상향될 수 있으며, 콘텐츠 관리 기능(신고, 차단) 구현 필요.


5. 스크린샷 및 그래픽 규격

필수 그래픽 자산

자산크기형식필수
앱 아이콘512x512PNG (32-bit, 투명 배경 불가)O
기능 그래픽1024x500PNG/JPEGO
스크린샷 (폰)최소 320px, 최대 3840px (긴 변)PNG/JPEGO
스크린샷 (태블릿 7")위와 동일PNG/JPEG태블릿 지원 시
스크린샷 (태블릿 10")위와 동일PNG/JPEG태블릿 지원 시

스크린샷 요구사항

항목요구사항
수량최소 2개, 최대 8개
비율16:9 또는 9:16
크기짧은 변 320-3840px, 긴 변 ≤ 3840px
권장 크기 (폰)1080x1920 (FHD) 또는 1440x2560 (QHD)
내용앱 실제 화면 (과장된 프로모션 이미지 지양)

기능 그래픽 디자인 가이드

┌────────────────────────────────────────┐
│ 1024 x 500 px │
│ │
│ ┌──────┐ │
│ │ 앱 │ 앱 이름 │
│ │아이콘│ 핵심 가치 한 줄 설명 │
│ └──────┘ │
│ │
│ [주요 스크린샷 배경] │
│ │
└────────────────────────────────────────┘

* 텍스트는 중앙 80% 영역에 배치 (잘림 방지)
* 로고/텍스트 비중 < 20%
* 고해상도 이미지 사용

6. 테스트 트랙

트랙 유형

트랙대상심사용도
내부 테스트최대 100명 (이메일 지정)없음개발팀 빠른 테스트
비공개 테스트이메일 목록 또는 Google 그룹있음 (첫 빌드)QA, 선별 베타
공개 테스트누구나 참여있음대규모 베타
프로덕션전체 사용자있음정식 출시

단계적 출시 (Staged Rollout)

프로덕션 트랙:
1% → 5% → 10% → 25% → 50% → 100%
(각 단계에서 크래시율, ANR 확인 후 진행)
# Flutter 빌드 + 내부 테스트 업로드
flutter build appbundle --flavor prod -t lib/main_prod.dart --release

# fastlane으로 업로드
fastlane supply \
--aab build/app/outputs/bundle/prodRelease/app-prod-release.aab \
--track internal \
--json_key service_account.json \
--package_name com.mycompany.myapp

CI/CD 자동 배포

# .github/workflows/android-deploy.yml (발췌)
- name: Upload to Play Store (Internal)
uses: r0adkll/upload-google-play@v1
with:
serviceAccountJsonPlainText: ${{ secrets.PLAY_STORE_SERVICE_ACCOUNT }}
packageName: com.mycompany.myapp
releaseFiles: build/app/outputs/bundle/prodRelease/app-prod-release.aab
track: internal
status: completed

7. Google Play Billing

상품 유형

유형설명예시
정기 결제 (Subscription)자동 갱신 구독Pro 월간/연간
일회성 제품 (One-time)소모성/비소모성크레딧, 프리미엄 잠금 해제

Play Console에서 상품 등록

Google Play Console > App > Monetize > Products

구독:
├── Product ID: pro_monthly
│ ├── Base Plan: monthly ($9.99/월)
│ └── Base Plan: yearly ($79.99/년)
└── Product ID: enterprise_monthly
└── Base Plan: monthly ($29.99/월)

일회성:
├── Product ID: credits_100 (소모성, $4.99)
└── Product ID: premium_unlock (비소모성, $19.99)

Flutter 구현 기본

// pubspec.yaml
// dependencies:
// in_app_purchase: ^3.1.0
// in_app_purchase_android: ^0.3.0

// 또는 RevenueCat 사용 권장 -> in-app-purchase.md 상세 참조

Google Play Billing Library 요구사항

요구사항설명
Billing Library 7+2025년 8월 이후 신규 앱 필수
실시간 개발자 알림 (RTDN)서버 사이드 구독 상태 추적
영수증 검증서버에서 Google Play Developer API로 검증

8. 앱 번들 (AAB) vs APK

비교

항목AAB (권장)APK
Play Store 제출필수 (2021년 8월~)불가 (신규 앱)
파일 크기작음 (필요한 리소스만 전달)큼 (모든 리소스 포함)
서명Play App Signing 필수자체 서명
다이나믹 전송지원 (on-demand 모듈)미지원
사이드로딩불가 (직접 설치 불가)가능

Flutter AAB 빌드

# AAB 빌드 (프로덕션)
flutter build appbundle \
--flavor prod \
-t lib/main_prod.dart \
--release

# 출력: build/app/outputs/bundle/prodRelease/app-prod-release.aab

Play App Signing 설정

단계설명
1Play Console에서 Play App Signing 활성화 (최초 1회)
2Google이 앱 서명 키 관리
3개발자는 업로드 키만 로컬 관리
4AAB 업로드 시 업로드 키로 서명
5Google이 앱 서명 키로 재서명하여 배포

업로드 키 설정

# android/key.properties (Git 제외!)
storePassword=your_store_password
keyPassword=your_key_password
keyAlias=upload
storeFile=../keys/upload-keystore.jks
// android/app/build.gradle
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

android {
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ?
file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}

9. 타겟 API 레벨 요구사항

Google Play 요구사항 (2025-2026)

시기신규 앱업데이트
2025년 8월~API 35 (Android 15)API 35
2026년 (예상)API 36API 36

매년 8월 31일까지 최신 API 레벨 타겟 필요. 미충족 시 스토어 등록 불가.

Flutter 프로젝트 설정

// android/app/build.gradle
android {
compileSdk 35

defaultConfig {
minSdk 24 // Android 7.0 (사용자 커버리지 ~97%)
targetSdk 35 // Google Play 요구사항 충족
}
}

API 레벨별 주요 변경사항

API 레벨Android 버전주요 영향
33 (Android 13)알림 권한 런타임 요청 필수 (POST_NOTIFICATIONS)
34 (Android 14)정확한 알람 권한, 포그라운드 서비스 유형 명시
35 (Android 15)Edge-to-edge 기본 적용, 예측형 뒤로가기

minSdkVersion 선택 가이드

minSdkAndroid 버전전세계 커버리지권장
215.0 (Lollipop)~99%X (너무 낮음)
236.0 (Marshmallow)~98%보수적
247.0 (Nougat)~97%권장
268.0 (Oreo)~93%적극적

10. Play Store 정책 핵심

거부/정지 사유 Top 10

순위정책거부 사유대응 방안
1개인정보데이터 안전 섹션 미작성/부정확모든 SDK 포함 정확 작성
2권한불필요한 위험 권한 요청최소 권한만 요청, 사용 이유 설명
3메타데이터앱 제목/설명에 키워드 스팸자연스러운 설명 작성
4광고기만적 광고, 전면 광고 과다광고 가이드라인 준수
5API 레벨targetSdkVersion 미충족매년 8월 전 업데이트
6결제디지털 콘텐츠 외부 결제Google Play Billing 사용
7UGC사용자 생성 콘텐츠 관리 미비신고/차단/필터링 구현
8지적 재산권타사 로고/상표 무단 사용라이선스 확보 또는 제거
9가족 정책어린이 대상 앱 정책 위반COPPA/GDPR-K 준수
10멀웨어기만적 동작, 백그라운드 데이터 전송투명한 데이터 처리

주요 정책 카테고리

결제 정책

규칙설명
디지털 콘텐츠Google Play Billing 필수 (수수료 15-30%)
물리적 상품외부 결제 가능
제3자 결제 (시범)일부 국가에서 대체 결제 허용 (수수료 -4%)

개인정보 정책

규칙설명
데이터 안전 섹션모든 수집 데이터 정확 기재
개인정보 처리방침URL 필수 제공, 앱 내 접근 가능
데이터 삭제사용자 요청 시 삭제 수단 제공
암호화전송 중 암호화 (HTTPS) 필수

앱 품질 가이드라인

규칙설명
ANR Rate< 0.47% (Vitals 기준)
Crash Rate< 1.09% (Vitals 기준)
과도한 wakelock백그라운드 wakelock 최소화
배터리 소모과도한 백그라운드 작업 금지

11. 체크리스트

Play Store 제출 전 체크리스트

#카테고리항목필수
1계정Google Play Console 개발자 계정 활성O
2계정본인/조직 인증 완료O
3빌드AAB 형식으로 빌드O
4빌드targetSdkVersion 최신 요구사항 충족O
5빌드Play App Signing 설정O
6빌드업로드 키 안전 보관 (Git 제외)O
7빌드ProGuard/R8 난독화 활성 (릴리즈)권장
8빌드릴리즈 빌드 크래시/ANR 없음O
9메타데이터앱 이름 (30자), 짧은 설명 (80자), 전체 설명O
10메타데이터앱 아이콘 512x512O
11메타데이터기능 그래픽 1024x500O
12메타데이터스크린샷 최소 2개 (폰)O
13정책콘텐츠 등급 (IARC) 질문지 작성O
14정책데이터 안전 섹션 작성O
15정책개인정보 처리방침 URLO
16정책데이터 삭제 요청 수단 제공O
17정책광고 포함 여부 정확 선언O
18결제Google Play Billing 상품 등록해당 시
19결제Sandbox 테스트 완료해당 시
20테스트내부 테스트 트랙에서 검증 완료권장

업데이트 제출 시 추가 확인

#항목
1versionCode 증가 확인
2targetSdkVersion 최신 요구사항 확인
3데이터 안전 섹션 변경 필요 여부 확인 (신규 SDK 추가 시)
4새로운 위험 권한 추가 시 용도 설명
5단계적 출시 (Staged Rollout) 사용 권장

Related: 인앱 결제 상세 | 공통 보안 | 공통 CI/CD