[맘스맘 개발기] 260126 업로드 키 리셋하기

■ 소개

목표: 419 (4업으로 1달러 벌기 시작해서 9달러까지 벌어보기)

주말에 고민하다가 그냥 정식앱을 바로 출시해보기로 했습니다.

사실 이번에는 앱구조를 심플하게 짰기 때문에

더 개발할 것은 프롬프트 밖에 없기 때문입니다.

.

그런데 다시 정식 앱 출시를 하려니 업로드키 암호(?)가 필요하다고 합니다.

저는 기억이 잘 안나더라구요.

그래서 reset을 했는데, 이게 승인까지 며칠 걸리는 일이었습니다.

이제 12시간만 더 기다리면 됩니다. ㅎㅎ

아마 이번주에 승인 된 후에는 정식 앱 출시로 달려보려고 합니다.

,

■ 진행 및 결과

1.커서로 정식출시 계획 md짜보기

늘 그렇듯 계획짜기로 시작합니다.

컴퓨터 화면에 표시된 한국어 텍스트 스크린샷
Google Play 정식 출시 계획 (momsmom)
현재 파악된 상태
앱ID(applicationId): com.momsmom.momsmom (유지 확정)
신규 개인 Play Console 계정: 프로덕션 출시 전 Closed test 12명 이상이 14일 연속 opt-in 필요 (이후 Production access 신청, 보통 7일 이내 검토)
Play App Signing: “Google이 앱서명키 생성” 방식으로 진행
SDK/기능: Firebase Analytics + AdMob(배너)
핵심 제약/리스크(미리 알아야 막힘이 없음)
릴리즈 서명키(업로드 키) 필수: android/key.properties가 없으면 릴리즈가 디버그키로 서명되어 업로드가 거절되도록 프로젝트가 설계되어 있음
android {
    val keystoreProperties = Properties()
    val keystorePropertiesFile = rootProject.file("key.properties")
    val hasReleaseKeystore = keystorePropertiesFile.exists()
    if (hasReleaseKeystore) {
        keystoreProperties.load(FileInputStream(keystorePropertiesFile))
    } else {
        println("WARNING: android/key.properties not found. Release builds will be signed with DEBUG key and will be rejected by Play Console.")
    }

    // ...

    signingConfigs {
        create("release") {
            if (hasReleaseKeystore) {
                keyAlias = keystoreProperties["keyAlias"] as String
                keyPassword = keystoreProperties["keyPassword"] as String
                storePassword = keystoreProperties["storePassword"] as String
                storeFile = rootProject.file(keystoreProperties["storeFile"] as String)
            }
        }
    }
}
광고/분석 사용 선언 필요: 메인 매니페스트에 AdMob App ID와 AD_ID 권한이 이미 들어있음
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
    <application
        android:label="momsmom"
        android:name="${applicationName}"
        android:icon="@mipmap/ic_launcher">
        <!-- AdMob App ID (production) -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-9102483915119551~2675823623"/>
실행 순서(권장)
A. Play Console 앱 생성 + 기본 정보 고정(패키지명/국가/언어)
Play Console에서 새 앱 생성 (패키지명 com.momsmom.momsmom 고정)
기본 언어(한국어) / 앱 카테고리(부모/육아 상담 성격에 맞게) 설정
“프로덕션 접근(Production access)”은 바로 못 열릴 수 있으니, 먼저 Internal/Closed test 중심으로 세팅
B. 업로드 키(keystore) 생성 + key.properties 준비
로컬에서 업로드 키용 upload-keystore.jks 생성
momsmom/android/key.properties를 만들어(로컬 전용) Gradle이 릴리즈 서명에 사용하게 설정
주의: keystore 파일/비밀번호는 분실하면 업데이트가 막힐 수 있으니, 암호화 백업(비밀번호 관리자 + 별도 오프라인) 필수
C. 1차 AAB 빌드/업로드 (Internal testing 추천)
Flutter 릴리즈 AAB 생성
예: flutter build appbundle --release --dart-define-from-file=tool/dart_defines_prod.json
Play Console Internal testing 트랙에 업로드해서 설치/기본 동작/광고 노출을 빠르게 확인
D. Closed testing 트랙 운영(신규 개인 계정 필수 요건)
Closed testing 트랙 생성/업로드
테스터 12명 이상을 이메일/Google Group으로 추가하고, 14일 연속 opt-in 유지
테스터에게 “14일 동안 opt-out 하지 말 것”을 명확히 안내
피드백/버그/크래시 대응(필요 시 Closed 트랙으로 업데이트 반복)
E. 프로덕션 접근 신청(Production access 신청서 작성)
Play Console Dashboard에서 Apply for production 진행
“Closed test 운영 방식/참여도/피드백 요약/개선 사항/출시 준비 완료 판단 근거”를 준비해 제출
검토는 보통 7일 이내(더 걸릴 수 있음)
F. 스토어 등록(스토어 노출 정보) + App content(정책) 완료
스토어 등록(앱 이름/설명/스크린샷/피처 그래픽/아이콘)
개인정보처리방침 URL 준비(필수)
App content에서 일반적으로 막히는 항목들:
Data safety(Analytics/Ads/채팅 메시지 전송/식별자 등 실제 동작 기준으로 정확히)
Content rating 설문
Target audience: 성인(부모)용으로 설정(어린이 직접 사용 의도 없음)
Ads(광고 포함) 표시
G. Production 릴리즈(점진적 롤아웃 권장)
Production 트랙에 AAB 업로드
초기에 1%~10% staged rollout → 크래시/ANR/리뷰 확인 후 확대
일정 예시(가장 빠른 경로)
Day 0~1: 업로드 키/서명 세팅 + Internal test 업로드
Day 1: Closed test 시작(12명 이상 모집/opt-in 완료)
Day 1~14: 14일 연속 유지 + 버그 수정(필요 시 업데이트)
Day 15: Production access 신청
Day 15~22: Google 검토(보통 ≤7일) + 스토어 등록/정책 폼 완성
승인 후: Production staged rollout
산출물/체크리스트(파일/콘솔 단위)
코드/빌드 측
momsmom/android/key.properties (로컬 전용)
업로드 키 upload-keystore.jks (로컬 보관)
릴리즈 AAB(버전코드 증가 확인)
Play Console 측
Internal test / Closed test 트랙
Production access 신청서
Store listing(한국어)
App content: Privacy policy URL, Data safety, Content rating, Target audience, Ads
참고(공식 문서)
신규 개인 계정 테스트 요건: https://support.google.com/googleplay/android-developer/answer/14151465
테스트 트랙 설정: https://support.google.com/googleplay/android-developer/answer/9845334
Play App Signing(키 개념): https://support.google.com/googleplay/android-developer/answer/9842756
Data safety 폼 개요: https://support.google.com/googleplay/android-developer/answer/10787469

그러는 과정에서 플레이 스토어 정식 출시를 하려면

closed test에서 12명 이상이 14일 이상 유지를 해야한다는 조건이 있다는 것을 알게 되었습니다.

.

과거에는 그렇지 않았는데 정책이 바뀌었다고 하더라구요.

.

안드로이드앱 카톡방에 정보를 공유드리니,

솔루션이 왓습니다 ㅎㅎ

.

개발자 품앗이 카페가 있다고 합니다.

그렇지 않으면 25달러 내고 12개 계정을 만들뻔 했습니다.

https://www.youtube.com/watch?v=NwKLLl-b7Gw&list=PLnBYYrDpCS2zPyiM5o6OsrqhRcHi-y7XS&index=2

골든레빗 님 감사드립니다!

.

그리고 새로 AAB파일을 빌드해서 배포하려고 올리려는데~

.

2.업로드키 리셋해보기

서론에서 말씀드렸다싶이...

Android App Bundle이 잘못된 키로 서명되었습니다. 제대로 된 서명 키로 App Bundle에 서명한 다음 다시 시도해 보세요.
SHA1: 41~~~~~~~~~~~~~~~~~~~~
지문이 포함된 인증서로 App Bundle에 서명해야 하지만, 업로드한 App Bundle 서명에 사용된 인증서의 지문은
SHA1: 88~~~~~~~~~~~~~~
입니다.

라고 에러뜸

하다보니, 에러가 났습니다.

휴대폰에 있는 한국어 앱 스크린샷

제가 비밀번호?를 만든 기억은 없는데,

무튼 그렇다고 하니, 그냥 생각없이 리셋을 하겠다고 했습니다.

App Integrity에 들어가서

파란색 배경의 페이지 스크린샷

App signing으로 들어가서

업데이트 키 재설정 요청을 보여주는 화면

Request upload key reset하면 됩니다.

.

그런데 이게 생각보다 오래 걸리네요.

Google 문서도구 - Google 문서도구 계정을 만드는 방법

UTC 1:04PM이면 한국시간으로 월요일 밤은 되어야 합니다. ㄷㄷㄷ

.

결국 주말에 손가락을 못놀려서 초초한 마음으로(?) 보냈습니다.

지피터스 금단현상이 이렇게 심합니다.

.

그래도 어찌되었건, 리셋하고 나면 계속 이어서 할 수 있으니, 정식출시까지 달려보겠습니다.

.

■ 느낀점 및 향후 계획

이번 스터디는 페이퍼워크와의 싸움같네요.

기다리는 시간이 많다는 점에서

조오금 지루한 면이 있지만,

이것도 한번은 돌파해봐야 나중에 앱을 공장처럼 찍어낼 수 있을 것 같습니다 ㅎㅎ

.

P.S.

주말에 육아하러 국립현대미술관 갔는데, 어떤 아버님이 커서 돌려놓고 육아하시는걸 발견했습니다. ㅎㅎ 반성합니다 ㅎㅎ 더 열심히 하겠습니다.

.

주말에 잠이 잘 안온거는 그런 죄책감(?)이랄까요 ㅎㅎ

1
1개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요