오랜만에 Android 앱을 Google Play에 출시하려고 하니 앱을 만드는 것보다 확인할 일이 더 많아 보였다.
앱 번들을 만들고 소개글과 이미지를 준비하는 일만으로 끝나지 않았다.
개인정보처리방침, 데이터 보안, 광고, 콘텐츠 등급, 대상 연령과 공개 국가도 실제 앱 동작에 맞춰 답해야 했다.
준비 중이던 결제 기능까지 한 번에 넣으려 했지만 상품 가격 저장 오류와 실제 구매 검증이 남아 있었다.
결제 기능을 기다리느라 잘 동작하는 앱의 첫 출시까지 미루는 것이 맞는지 다시 생각했다.
첫 출시에는 준비한 기능을 전부 넣어야 할까?
검증하지 못한 결제부터 뺐다
원래는 출시할 음악 앱에 1개월 선불 Pro 이용권을 제공할 생각이었다.
Pro 사용자는 광고 없이 모든 코드 진행 프리셋을 사용하는 방식이었다.
하지만 Play Console에서 가격 저장 오류가 반복됐고 구매, 복원, 만료와 환불도 실제로 확인하지 못했다.
버튼만 숨기고 프리셋 잠금을 남기면 사용자는 이유도 모른 채 기능 일부를 사용할 수 없게 된다.
그래서 첫 버전에서는 Pro 진입점과 잠금을 함께 비활성화했다.
14개 장르의 180개 코드 진행 프리셋을 모두 무료로 열고 화면 아래의 배너 광고만 유지했다.
기능을 덜 완성한 것이 아니라 검증된 범위와 사용자에게 보여 주는 범위를 맞춘 결정이었다.
출시 후보를 다시 만들었다
무료 프리셋 기준으로 앱 버전을 1.0.1 (2)로 올렸다.
업로드 서명, R8 코드 축소, 리소스 축소와 ReTrace 매핑 파일을 적용한 AAB를 만들었다.
쉬운 설명: AAB는 Google Play에 제출하는 Android 앱 묶음이고, R8은 필요 없는 코드를 줄이며 ReTrace 파일은 줄어든 코드에서 발생한 오류를 다시 읽기 쉽게 바꿔 준다.
Google Play에서는 최소 Android API 24, 목표 SDK 36과 신규 설치 크기 약 6.5MB를 확인했다.
쉬운 설명: 최소 API는 앱이 실행될 수 있는 가장 오래된 Android 기준이고, 목표 SDK는 앱이 맞추도록 개발된 최신 Android 기준이다.
내부 테스트 라이브러리에 있던 같은 AAB를 프로덕션 출시 후보에 다시 사용했다.
이전 1.0 (1)은 제외하고 1.0.1 (2) 하나만 남겼다.
스토어 설명과 실제 앱을 맞췄다
한국어 앱 이름은 코드 스케치, 영어 이름은 Chord Sketch로 정했다.
짧은 설명과 자세한 설명도 한국어와 영어로 각각 작성했다.
로그인 없이 코드 휠, 피아노 건반, 스페셜 코드, 4코드 스케치, 메트로놈과 모든 프리셋을 사용할 수 있다는 현재 기능만 적었다.
아직 제공하지 않는 Pro 혜택과 결제 문구는 뺐고 배너 광고가 표시된다는 점은 분명하게 적었다.
앱 아이콘, 기능 그래픽과 실제 휴대전화 화면 네 장도 등록했다.
예전 Pro 잠금이 보이는 스크린샷은 현재 무료 버전과 맞지 않아 제외했다.
영어 등록정보는 별도 이미지를 다시 올리지 않고 기본 등록정보의 이미지를 함께 사용했다.
정책 질문은 실제 SDK를 기준으로 답했다
앱은 로그인 없이 사용할 수 있고 광고를 포함한다고 선언했다.
대상 연령은 13세 이상으로 정했고 정부, 금융과 건강 앱에는 해당하지 않는다고 답했다.
콘텐츠 등급 설문에는 폭력, 성적 콘텐츠, 도박, 약물, 공포와 사용자 생성 콘텐츠가 없다고 입력했다.
그 결과 대한민국에서는 전체 이용가에 해당하는 등급이 나왔다.
데이터 보안 양식에는 Google Mobile Ads SDK가 처리할 수 있는 대략적인 위치, 진단 정보, 앱 상호작용과 기기 또는 기타 ID를 반영했다.
쉬운 설명: SDK는 앱에 기능을 더하는 도구 모음이므로 앱이 직접 저장하지 않는 정보라도 광고 SDK가 처리한다면 데이터 보안 답변에 포함해야 한다.
Android 13 이상 앱에 필요한 광고 ID 선언도 실제 매니페스트와 광고 SDK 사용을 기준으로 작성했다.
쉬운 설명: 매니페스트는 앱의 권한과 기본 설정을 적어 둔 설명서이고, 광고 ID는 광고 제공과 성과 측정에 사용하는 재설정 가능한 식별값이다.
개인정보처리방침, 지원 페이지와 데이터 삭제 안내도 공개 주소로 연결했다.
한국어와 영어로 전 세계 공개를 준비했다
앱 인터페이스와 스토어 설명을 한국어와 영어로 제공했다.
특정 국가에서만 사용하는 계정, 결제나 지역 전용 콘텐츠가 없어서 선택 가능한 176개 국가와 지역을 모두 공개 대상으로 지정했다.
모든 언어를 따로 번역한 것은 아니므로 다른 언어 환경에서는 Google Play의 기본 언어 처리에 따라 등록정보가 표시될 수 있다.
지역을 많이 선택하는 일보다 어느 지역에서든 앱 설명과 실제 기능이 어긋나지 않게 만드는 일이 더 중요했다.
마지막 차단 항목은 광고 ID였다
프로덕션 AAB, 국가, 소개글과 정책 응답을 저장하자 게시 개요에 12개 변경사항이 모였다.
제출 버튼은 아직 비활성화되어 있었고 Android 13의 광고 ID 사용 여부를 작성하라는 문제가 하나 남아 있었다.
광고 SDK와 매니페스트 권한을 확인한 뒤 사용 여부와 목적을 저장하자 차단이 사라졌다.
쉬운 설명: Play Console은 제출 전에 앱 파일과 정책 답변이 서로 맞는지 자동으로 확인하고, 빠진 필수 답변이 있으면 제출 버튼을 막는다.
한국어와 영어 출시 노트에는 첫 출시 안정화, 사용성 개선과 모든 프리셋 무료 제공을 적었다.
마지막으로 12개 변경사항을 Google Play 검토로 전송했다.
빠른 자동 검사가 끝난 뒤 상태가 검토 중인 변경사항으로 바뀐 것도 확인했다.
제출과 출시는 같은 말이 아니다
현재 상태는 프로덕션 출시 심사 제출 완료다.
Google의 검토와 실제 스토어 공개는 아직 남아 있다.
관리형 게시를 사용하지 않았기 때문에 심사가 승인되면 별도의 공개 버튼 없이 자동으로 게시된다.
쉬운 설명: 관리형 게시는 승인이 끝난 뒤 개발자가 원하는 시점에 직접 공개하도록 멈춰 두는 기능이다.
앱이 공개되면 AdMob에서 스토어 등록정보를 연결하고 앱 검토와 운영 광고 노출도 다시 확인해야 한다.
Pro 결제는 가격 저장과 실제 구매 상태 검증을 끝낸 뒤 별도 버전에서 다시 붙일 수 있다.
오랜만의 출시는 기능을 많이 넣는 일이 아니라 코드, 소개글, 스크린샷과 정책 답변이 같은 앱을 설명하도록 맞추는 일이었다.
검증하지 못한 기능 하나를 빼자 오히려 첫 버전의 경계가 더 분명해졌다.
한 줄 요약: 첫 출시에서는 검증하지 못한 기능을 제외하고, 앱의 실제 동작·스토어 설명·스크린샷·정책 답변이 모두 같은 기능 범위를 가리키도록 맞춘 뒤 제출하는 편이 안전하다.