https://www.youtube.com/watch?v=1KYEPKRVFZA
1. 이건 꼭 알아야 한다[^1]
[? 질문] Flutter로 만든 안드로이드 앱을 구글 Play Store에 올리기 위해, 아이콘 제작부터 서명(키) 설정, 빌드, 콘솔 업로드, 출시 준비까지 무엇을 어떤 순서로 해야 하는가[^1]
[= 답] (1) 앱 아이콘을 준비하고 flutter_launcher_icons로 각 해상도 아이콘을 자동 생성한 뒤, (2) 앱 배포를 위한 **디지털 서명 키(업로드 키/키스토어)**를 만들고 Gradle에 연결하고, (3) Manifest/Gradle에서 **필수 설정(인터넷 퍼미션, 앱 이름, applicationId, 버전코드/버전네임)**을 점검한 다음, (4) flutter build appbundle로 AAB를 빌드해 Play Console에 업로드하고, (5) 업로드 중 흔한 에러(유니크하지 않은 applicationId, 낮은 버전코드)를 해결하며, (6) 마지막으로 콘솔에서 정책/스토어 등록 정보/그래픽/테스트를 채워 테스트 후 출시한다.[^1]
[? 질문] 안드로이드 앱 배포에서 “키(서명)”는 왜 필요하고, 어떤 종류가 있는가[^2]
[= 답] 앱을 유저에게 공개하려면 “이 앱의 주인이 나다”를 증명하는 디지털 시그니처가 필요하고, 안드로이드에는 디플로이먼트 키(APK 직접 배포 시)와 구글이 권장하는 업로드 키(Play Store 배포 파이프라인에서 사용)가 있다.[^2]
[? 질문] Play Console 업로드 과정에서 자주 터지는 문제(예: applicationId 중복, 버전코드 오류)는 어떻게 해결하는가[^14][^16]
[= 답] applicationId가 유니크하지 않으면 패키지(영상에서는 rename 패키지)를 설치해 실수 없이 일괄 변경하고, 버전코드 오류는 pubspec.yaml의 1.0.0+1에서 + 뒤 **버전코드(정수)**를 올려 Play Store에 등록된 값보다 항상 크게 만든 뒤 재빌드/재업로드한다.[^14][^16]
2. 큰 그림[^1]
이 콘텐츠는 Flutter로 제작한 안드로이드 앱을 **구글 Play Store에 배포(업로드 및 출시)**하는 전 과정을, “아이콘 준비 → 서명키 생성/연결 → 앱 설정 점검 → AAB 빌드 → Play Console 업로드 → 에러 해결 → 출시 준비(정책/설명/그래픽/테스트)” 흐름대로 안내한다.[^1] 배포를 망설이게 만드는 지점(아이콘/서명/콘솔 입력/에러)을 실제로 겪는 순서대로 하나씩 처리하도록 구성되어 있다.[^1]
- 앱 아이콘 자동 생성: 단일 PNG를 준비해
flutter_launcher_icons로 안드로이드 리소스 폴더들에 필요한 런처 아이콘을 자동 생성하고, Manifest에 연결된 결과를 확인한다.[^2][^3] - 업로드 키(키스토어) 기반 서명 설정: 키스토어를 만들고,
key.properties를 생성해 Gradle(build.gradle)과 연결해 빌드 시 서명이 자동으로 적용되게 한다.[^4][^5] - Play Console 업로드와 출시 준비: AAB 업로드, applicationId/버전코드 에러 해결, Identity verification, 개인정보처리방침/스토어 설명/그래픽/테스터 리스트까지 “출시 전 필수 작업”을 실제 콘솔 흐름에 맞춰 다룬다.[^9][^17]
3. 하나씩 살펴보기[^1]
3.1 배포를 못 하는 가장 큰 이유: “어떻게 올리는지 몰라서”를 끝내기[^1]
영상은 “Flutter로 앱은 만들었는데 업로드 방법을 몰라 배포를 망설였다”는 상황을 출발점으로 잡는다.[^1] 그리고 이 영상에서 앱 아이콘 제작부터 빌드, 구글 Play Store 업로드까지를 “하나하나 자세히” 알려주겠다고 선언하며 시작한다.[^1]
즉, 결과물이 아니라 배포 파이프라인 전체(리소스 준비 → 서명 → 빌드 → 콘솔 업로드/출시 설정)를 실제 작업 순서대로 밟는 것이 목표다.[^1]
3.2 앱 아이콘 준비와 flutter_launcher_icons로 자동 생성하기[^2][^3]
3.2.1 아이콘 원본 이미지 준비(권장 조건과 폴더 배치)[^2]
앱 아이콘을 만들기 위해 먼저 최소 192 사이즈 이미지를 준비하라고 안내한다.[^2] 또한 배경이 없는 PNG 파일을 추천한다.[^2]
이 이미지를 프로젝트 내에 보관하기 위해, 영상에서는 다음과 같은 식으로 폴더를 구성한다:
- 프로젝트 루트에 폴더 생성[^2]
- 그 안에
assets폴더 생성[^2] assets안에icon폴더 생성[^2]icon폴더 안에 준비한 이미지를 저장[^2]
화자는 “이것이 내가 설정한 이미지 경로”라며, 시청자는 원하는 경로로 설정해도 상관없다고 덧붙인다.[^2] 핵심은 이후 설정 파일에 “실제 이미지 경로”를 정확히 연결하는 것이다.[^3]
3.2.2 pubspec.yaml에 런처 아이콘 설정 넣기[^3]
이미지 준비가 끝나면, **Flutter 런처 아이콘(패키지)**를 사용해 아이콘을 세팅한다.[^3] 이를 위해 프로젝트 폴더에서 pubspec.yaml을 열고, 영상에서 제시하는 설정 코드를 입력한다.[^3]
이때 중요한 작업은 “오리지널 이미지 파일 경로를 전부 변경”하는 것으로, 즉 방금 저장한 PNG의 경로로 설정을 맞춰야 한다.[^3]
3.2.3 터미널 명령으로 패키지 포함 및 아이콘 생성 실행[^3]
설정 후 터미널에서 다음 흐름으로 작업한다는 점을 강조한다:
flutter pub get을 실행해,flutter_launcher_icons를 프로젝트에 포함(인클루드)한다.[^3]flutter_launcher_icons가 제공하는 “아이콘 자동 생성 명령어”를 실행한다.[^3]- 생성된 아이콘들이 제대로 만들어졌는지 확인한다.[^3]
3.2.4 아이콘 생성 결과 확인: 리소스 폴더 및 Manifest 연결 확인[^4]
아이콘이 정상 생성되면 안드로이드 쪽에서 다음을 확인할 수 있다고 한다:
android/app/src/main/res이하의 여러 리소스 폴더들에 런처 아이콘 PNG 파일들이 생성되어 있다.[^4]AndroidManifest.xml을 보면 생성된 이미지 파일명으로 아이콘이 설정되어 있는 것을 볼 수 있다.[^4]
만약 이미지가 제대로 생성되지 않았다면, res 폴더 안에 있는 “베이스 이미지”를 다시 확인하라고 안내한다(원본 PNG/설정 경로/파일 자체 문제 가능성).[^^4]
[!TIP] 아이콘 생성이 안 될 때 1차 점검 포인트
pubspec.yaml의 이미지 경로가 실제 파일 위치와 맞는지, 그리고android/app/src/main/res에 다양한 해상도 아이콘이 생성됐는지부터 확인하라고 안내한다.[^3][^4]
3.3 “배포하려면 서명이 필요하다”: 키 종류 이해와 업로드 키 생성[^4][^5][^6]
3.3.1 앱 주인 증명: 디지털 시그니처가 필요한 이유[^4]
화자는 앱을 유저에게 공개하기 위해서는 “내가 해당 앱의 주인이라는 디지털 시그니처를 앱에 넣어줘야 한다”고 설명한다.[^4] 즉, 서명은 단순 옵션이 아니라 배포의 필수 단계라는 점을 명확히 한다.[^4]
3.3.2 안드로이드 서명 키 2종: 디플로이먼트 vs 업로드[^5]
안드로이드에는 서명 키가 두 타입이 있다고 정리한다.[^5]
- 디플로이먼트 키(Deployment key)
- 유저가 APK 파일을 다운로드 받을 때 APK에 존재하는 키라고 설명한다.[^5]
- 업로드 키(Upload key)
- 구글이 추천하는 방식으로, 유저가 구글 Play Store에서 다운로드 받는 앱들은 업로드 키를 통해 Play Store에서 “결합된다”는 식으로 설명한다(Play 배포 파이프라인에서 업로드 키가 쓰인다는 요지).[^5]
영상은 이후 실제 작업 대상으로 업로드 키 생성을 선택한다.[^5]
3.3.3 업로드 키(키스토어) 생성: OS별 터미널/명령어 차이[^5][^6]
키 생성은:
- Mac 또는 Linux: 터미널 사용[^5]
- Windows: PowerShell 사용, 명령어도 다르다고 언급[^5]
각자 환경에 맞는 명령어로 **키스토어(keystore)**를 생성하라고 한다.[^5]
3.3.4 생성 과정에서 입력하는 값들, 그리고 “비밀번호 2개” 이슈[^6]
키스토어 생성 과정에서 다음을 입력한다고 구체적으로 말한다:
- 키스토어 비밀번호 입력 → 동일하게 한 번 더 입력(확인)[^6]
- 이름부터 회사 정보, 거주 주소 등 각종 정보 입력[^6]
- 입력한 정보가 맞으면
yes를 타이핑하고 엔터[^6] - 그 다음에는 키스토어 비밀번호가 아니라 키 비밀번호를 입력[^6]
여기서 중요한 포인트를 짚는다:
- “여러분들은 두 가지 비밀번호를 기억해야 된다”
- 키스토어 비밀번호
- 키 비밀번호[^6]
- 두 개 기억하기 싫으면 동일한 비밀번호를 사용하면 된다고 팁을 준다.[^6]
이 과정을 마치면 “업로드 키스토어 생성” 단계가 완료된다.[^6]
[!IMPORTANT] 비밀번호 관리 포인트
키스토어 비밀번호와 키 비밀번호가 별개로 존재하며, 잊으면 서명/업데이트에 문제가 생길 수 있으니 관리가 필요하다고 흐름상 강조한다.[^6]
3.4 생성한 키스토어를 Flutter/Android 프로젝트에 연결하기: key.properties + Gradle 설정[^7][^8]
업로드 키스토어 파일을 만들었다면, 이를 프로젝트 빌드에 실제로 적용하기 위해 “두 가지”를 한다고 정리한다.[^7]
- 키스토어 관련 정보가 담긴 파일 생성[^7]
- 그 파일을 프로젝트의 build.gradle에서 사용[^7]
3.4.1 android/key.properties 파일 만들고 4가지 정보 입력[^7]
먼저 android 폴더 안에 key.properties 파일을 생성하라고 한다.[^7]
그리고 이 파일 안에 네 가지 정보를 담는다고 말한다.[^7]
- 이 중에서
keyAlias는 “upload”로 두고[^7] - 나머지 세 개 값은 키스토어 생성할 때 설정한 값 그대로 사용한다고 안내한다.[^7]
(영상 원문은 4가지 항목의 “이름” 전체를 조목조목 읽어주진 않지만, 일반적으로 이 흐름은 storeFile, storePassword, keyPassword, keyAlias를 의미하는 설명 구조로 전개된다. 영상에서도 ‘네 가지 정보’와 ‘keyAlias=upload’, ‘나머지 세 개는 생성 시 값’이라고 명시한다.)[^7]
3.4.2 Gradle에서 key.properties를 읽어 서명 설정에 연결하기[^7][^8]
이제 생성한 key properties 파일을 Gradle에서 연결한다.[^7]
- 프로젝트의
android/app/build.gradle(영상에서는 “Android 폴더 안에 app 그리고 build 파일”을 열라고 안내) 파일을 연다.[^8] - 파일 안에서
android키워드 이전에, 키스토어를 연결해주는 코드를 넣는다.[^8] - 그리고 “프로젝트가 빌드될 때 해당 키스토어를 사용하라”는 코드 블록을 넣는다.[^8]
android코드 블록 안에서buildTypes를 찾는다.[^8]- 화면처럼
signingConfig코드 블록을 복사해 붙여놓고, 해당 코드 블록을 사용하는 코드를 넣어준다(= 빌드 타입에 signingConfig를 지정하는 흐름).[^8]
이 단계까지 마치면, 앱 번들/릴리즈 빌드 시 서명이 자동으로 적용되는 상태를 만드는 것이 목적이다.[^8]
3.5 빌드 전에 반드시 점검할 것들: 퍼미션, 앱 라벨(이름), applicationId, 버전코드/버전네임[^9][^10][^11]
화자는 “안드로이드 앱을 빌드하기 전에 확인해 줄 부분이 몇 가지가 있다”고 하며, 대표적으로 Manifest와 Gradle 설정을 짚는다.[^9]
3.5.1 인터넷 퍼미션 넣기: debug에는 있고 main에는 없다[^9]
가장 먼저 “인터넷 퍼미션”을 넣어주자고 한다.[^9]
android/app/src/debug/AndroidManifest.xml에는 인터넷 퍼미션이 들어있는데[^9]android/app/src/main/AndroidManifest.xml에는 인터넷 퍼미션이 없다고 지적한다.[^9]
따라서:
- debug Manifest의 인터넷 퍼미션을 복사해서[^9]
- main Manifest의 application 태그 바로 위에 붙여 넣으라고 안내한다.[^9]
이는 실제 배포용(main) 빌드에 권한이 포함되도록 하는 작업이다.[^9]
3.5.2 유저가 보는 앱 이름: android:label 변경[^9]
또한 main Manifest의 application 태그 안에 있는 android:label 값이 “유저들이 보는 앱 이름”이라고 설명한다.[^9]
따라서 이 값을 원하는 앱 이름으로 변경하라고 안내한다.[^9]
3.5.3 build.gradle에서 3가지 값 확인: applicationId / versionCode / versionName[^10][^11]
다음으로 android/app/build.gradle 파일을 열고 android 태그 안의 “세 가지 값”을 확인하라고 한다.[^10]
- applicationId
- 다른 앱들과 구분되는 “나만의 유니크한 아이디”라고 설명한다.[^10]
- applicationId를 잘못 정했을 때 어떤 문제가 생기고, 어떻게 바꾸는지는 “나중에 보여준다”고 예고한다.[^10]
- versionCode
pubspec.yaml에version: 1.0.0+1이 있는데, 여기서+1부분이 versionCode에 해당한다고 연결해 설명한다.[^10]- 그리고 “중요한 것은 버전 코드는 무조건 integer(정수)”라고 강조한다.[^11]
- Play Store에 업로드할 때마다 Play Store에 있는 versionCode보다 “반드시 높게” 만들어야 업로드가 진행된다고 규칙을 제시한다.[^11]
- versionName
1.0.0중에서 “1.0”에 해당한다고 설명하며(표현상 완전 일치라기보다 ‘버전 표시 문자열’로 연결해 설명),[^12]- versionName은 string이고, 원하는 방식대로 만들면 된다고 말한다.[^12]
[!WARNING] Play 업로드 실패의 대표 원인
versionCode는 정수이며, 업로드할 때마다 기존보다 반드시 증가해야 한다는 규칙을 지키지 않으면 업로드가 막힌다고 강조한다.[^11][^16]
3.6 AAB(App Bundle) 빌드: flutter build appbundle 실행과 결과 확인[^12]
설정을 점검한 뒤 “드디어 앱번들 빌드를 시작”한다고 하며, 터미널에서 다음을 실행한다:
flutter build appbundle[^12]
빌드가 끝나면:
- 생성된 **appbundle 파일(AAB)**을 확인한다.[^12]
- 커맨드(⌘)를 누른 상태로 링크를 클릭하면 appbundle 파일을 볼 수 있다고 안내한다(빌드 로그에 출력되는 경로 링크를 클릭하는 흐름).[^12]
이제 Play Console에 업로드할 “파일” 준비가 완료된 것이다.[^12]
3.7 Play Console 가입과 결제, 그리고 “Identity verification” 절차[^12][^13][^14]
3.7.1 Play Console 가입: 질문에 답하고 약관 확인 후 1회 비용 결제[^12]
앱을 업로드할 구글 Play Console에 가입하라고 한다.[^12]
가입 과정은 “여타 다른 가입 과정과 크게 다를 게 없다”, 즉 나오는 질문에 솔직하게 답하면 끝이라고 설명한다.[^12]
마지막에 Terms and Conditions 확인 후 돈을 내야 하는데, 이 돈은 가입 시 “딱 한 번만” 내는 것이니 “그렇게 아까워할 필요가 없다”고 말한다.[^12]
3.7.2 가입이 끝난 줄 알았는데: Identity verification을 해야 배포 가능[^13]
가입을 마치면 끝인 줄 알지만, “Identity 이것도 해야 된다”고 바로 이어서 말한다.[^13]
즉, **아이덴티티 등록(신원 확인)**이 완료돼야 앱을 배포할 수 있다는 점을 강조한다.[^13]
Play Console에 들어가면 “verify identity” 문구가 보이고, 이를 통해 아이디를 등록해야 앱을 배포할 수 있다고 설명한다.[^13]
3.7.3 신원 확인에 필요한 것: 법적 이름 + 신분증 이미지 + 주소[^14]
등록은 간단하다고 하며, 요구사항을 나열한다:
- 실제 법적 이름 입력[^14]
- 여권/주민증/운전면허증 중 하나를 골라 이미지를 업로드[^14]
- 주소도 넣어야 한다고 덧붙인다.[^14]
그리고 구글이 아이디를 확인하는 동안에도 앱 업로드는 진행할 수 있다고 안내한다.[^14]
3.8 콘솔에서 앱 생성(Create app)과 “테스트 후 공개” 전략[^14][^15]
3.8.1 앱 생성: 앱 기본 정보 입력 후 Create app[^14]
Play Console에서 Create app을 눌러 앱을 만들고, 앱에 관련된 정보를 하나씩 입력한다.[^14]
기본 정보를 입력한 후 Create app을 클릭하면, 업로드용 대시보드가 보인다고 설명한다.[^14]
그런데 여기서 “입력할 정보가 엄청나게 많다”고 말하며, 단순 파일 업로드만으로 끝이 아님을 강조한다.[^14]
3.8.2 바로 공개하지 말고 테스트부터: 테스팅 방법 선택 → 테스트 → 퍼블리시[^15]
화자는 앱 번들을 업로드하자마자 유저에게 바로 공개하기보다는, 업로드된 앱을 테스트한 후 공개하는 것이 좋다고 권한다.[^15]
또한 테스팅 방법이 여러 가지가 있으니, 각자에 맞는 테스팅 방법을 선택하고 테스트를 마친 뒤 publish(퍼블리시)하라고 안내한다.[^15]
3.9 첫 업로드: 릴리즈 생성 → 키 선택 이슈 → applicationId 중복 에러 해결[^15][^16][^17]
3.9.1 릴리즈 만들고 App Bundle 업로드 시작[^15]
테스팅 전에 우선 앱 번들을 업로드해 보자고 하며:
Create a new release선택[^15]Create new release클릭[^15]
을 통해 업로드 화면으로 진입한다.[^15]
3.9.2 “업로드 키로 빌드했는데 왜 키를 또 고르라고 하지?”[^16]
여기서 화자는 의문을 제시한다:
- 업로드 키를 사용해서 빌드했음에도, 콘솔에서 “키를 선택하라”고 나온다는 것[^16]
그리고 개인적인 의견을 덧붙인다:
- 자신은 “우리가 사용한 업로드 키는 다른 스토어에 올릴 때 사용”하고[^16]
- 구글 Play Store에는 “구글 제너레이트 키”를 사용한다고 말한다.[^16]
- 그래서 이번에는 키 클릭(= 콘솔에서 제시하는 키 설정을 진행)한다고 한다.[^16]
(원문 표현은 구체 메뉴명까지 모두 풀어 설명하진 않지만, 업로드/서명 키 선택 단계에서 Play App Signing 관련 선택을 하게 되는 맥락을 전달한다.)[^16]
3.9.3 업로드 직후 발생한 에러: applicationId가 유니크하지 않다[^17]
드디어 빌드한 앱 번들을 업로드하자, 에러가 나타났고 그 이유는:
- 어플리케이션 아이디(applicationId)가 유니크하지 않아서라고 한다.[^17]
즉, 이미 Play Store(혹은 다른 앱)에서 사용 중인 applicationId와 충돌하면 업로드가 막힌다.[^17]
3.10 applicationId 변경: 수동 vs 패키지, 그리고 rename 패키지로 안전하게 변경[^17][^18]
applicationId를 바꾸는 방법은 두 가지라고 정리한다.[^17]
- 매뉴얼로 바꾸는 방법[^17]
- 패키지를 사용하는 방법[^17]
영상에서는 패키지를 사용한다. 이유는:
- 매뉴얼로 바꾸면 “실수를 할 가능성이 많기 때문”이라고 설명한다.[^17]
3.10.1 사용할 도구: rename 패키지 설치[^18]
사용할 패키지는 **rename**이라고 말한다.[^18]
그리고 “패키지를 설치하는 것부터 시작”하며, 터미널에서 Flutter 명령어로 설치하라고 안내한다.[^18]
3.10.2 rename 명령으로 applicationId 변경[^18]
설치 후, 보이는 것처럼 명령어를 입력하고 실행하면 applicationId가 변경된다고 한다.[^18]
그리고 주의점을 강조한다:
- 맨 마지막 부분에 있는
com.더코딩파파.demo부분을[^18] - 여러분이 원하는 유니크한 applicationId로 바꾸고 실행해야 한다.[^18]
3.10.3 변경 확인: build.gradle에서 applicationId 확인 위치[^19]
변경이 잘 되었는지 확인하려면:
android/app/build.gradle을 열고[^19]android태그 안(또는defaultConfig안)에 있는 applicationId를 확인하면 된다고 안내한다.[^19]
이 확인을 통해 실제로 패키지 변경이 반영됐는지 검증한다.[^19]
3.11 다음 에러: 버전코드(versionCode) 문제 해결 → pubspec.yaml에서 +숫자 증가[^19][^20]
applicationId 문제를 해결하고 다시 앱 번들을 빌드해서 업로드하면, 이번에는 버전 코드 에러가 나온다고 한다.[^19]
여기서 앞서 설명했던 규칙을 다시 상기시킨다:
- versionCode는 업로드할 때마다 “항상 1씩 올린 후 업로드”해야 업로드 가능해진다.[^19]
해결 방법은:
- 프로젝트의
pubspec.yaml로 가서[^20] version: 1.0.0+1에서+이후의 번호를 올린 다음[^20]- 다시 빌드해서 업로드한다.[^20]
그 결과 “드디어 에러 없는 깔끔한 업로드가 되었다”고 말한다.[^20]
그리고 Next를 클릭해서 업로드를 마치자고 안내한다.[^20]
3.12 “업로드만 하면 끝이 아니다”: 출시를 위해 콘솔에서 작성해야 할 것들[^20][^21][^22]
화자는 앱 번들만 업로드하면 끝인 줄 알았지만, 실제로는 “이렇게 많은 것들을 작성해야 앱을 모든 유저들에게 출시할 수가 있다”고 말한다.[^20]
다만 이 영상은 전체를 다 다루기보다는 “필요한 부분만 담겠다”고 선을 긋는다.[^20]
3.12.1 작성 접근법: 대시보드를 따라가도 되지만, 에러부터 해결 후 필요한 것만 작성[^20]
두 가지 방법을 제시한다:
- 대시보드에서 하나씩 따라 작성해도 되지만[^20]
- 개인적으로는 여기저기 떠 있는 에러 메시지들을 먼저 해결한 후, 대시보드에서 필요한 부분만 작성해서 출시한다고 말한다.[^20]
그리고 본인 경험을 바탕으로, “처음 출시할 때 어려웠던 부분”을 기준으로 팁을 나열하겠다고 한다.[^20]
3.13 출시 준비 팁 1: 개인정보처리방침(Privacy Policy) 만들기[^21]
첫 번째로 든 항목은 **Privacy Policy(개인정보 처리 방침)**이다.[^21]
[? 질문] 개인 정보 처리 방침을 어떻게 만들어야 하는가[^21]
[= 답] 다행히도 정부에서 개인이 쉽게 만들 수 있도록 프로그램을 만들어 줬고, 그 프로그램을 통해 앱에 맞는 개인정보처리방침을 쉽게 만들 수 있다고 안내한다.[^21]
즉, 직접 법률 문서를 처음부터 쓰기보다, 공공에서 제공하는 도구/프로그램을 활용하라는 제안이다.[^21]
3.14 출시 준비 팁 2: 앱 기능 설명과 마케팅/홍보의 중요성[^22]
두 번째로는 “앱을 아무리 잘 만들어도”라는 전제를 깔고, 설명(커뮤니케이션)과 홍보가 다운로드에 직접 영향을 준다고 강조한다.[^22]
- 앱의 기능을 효율적으로 설명하지 못하면 유저가 다운로드를 받지 않아서 “아무 쓸모가 없다”고 말한다.[^22]
- 또한 “구글에서 해주는 지원금도 꼭 받아서 광고한다”는 식으로, 구글의 지원 프로그램(광고/프로모션 관련)을 활용하라고 권한다.[^22]
- “여기서부터가 진짜다”라는 말로, 기술적 업로드 이후의 스토어 최적화/마케팅 단계가 실전 난이도라는 뉘앙스를 준다.[^22]
3.15 출시 준비 팁 3: 스토어 등록 정보(이름/설명)와 그래픽스(이미지/영상), 테스터 리스트[^23][^24]
3.15.1 스토어에서 보이는 텍스트: 앱 이름, 쇼트/풀 디스크립션[^23]
화자는 Play Store에서 보이는 항목들을 짚는다:
- 앱 네임: 구글 플레이 스토어에서 보이는 앱 이름[^23]
- Short description / Full description: 유저들이 “어떤 앱인지” 설명을 보게 되는 영역[^23]
즉, 유저가 앱을 이해하고 설치를 결정하는데 핵심적인 텍스트 필드라는 의미다.[^23]
3.15.2 “가장 중요한 그래픽스”: 유저는 제목 다음에 이미지/영상부터 훑는다[^23]
그리고 가장 중요한 요소로 **그래픽스(이미지/영상)**를 강조한다.[^23]
- 유저들 대부분이 제목을 본 후 바로 이미지나 영상을 통해 앱 기능을 훑어본다고 설명한다.[^23]
- 각 이미지/영상의 **스펙(사이즈/요구사항)**은 아래에 자세히 나와 있으니 참고해서 제작하라고 안내한다.[^23]
즉, 스토어 등록의 설득력은 시각 자료에 크게 좌우된다는 주장이다.[^23]
3.15.3 알파 테스트를 위한 테스터 리스트 만들기: 내 이메일을 추가[^24]
마지막으로 테스터 리스트를 만드는 팁을 준다.[^24]
- 내 이메일을 테스터 리스트에 넣어 준다.[^24]
- 이 테스터 리스트를 통해 알파 테스트를 세팅하고[^24]
- 직접 다운로드 받아서 앱을 테스트할 수 있다고 설명한다.[^24]
즉, 출시 전 “내가 실제 스토어 경유 설치/동작”을 확인할 수 있는 절차로 테스터 리스트를 활용하라는 뜻이다.[^24]
3.16 마무리: 업로드 과정 정리와 추가 요청(댓글) 기반 업데이트[^24][^25]
화자는 여기까지 Flutter 앱을 구글 Play Store에 업로드하는 방법을 “간단히 알아보았다”고 마무리한다.[^24]
그리고 부족한 부분은 댓글을 남기면, 그에 따라 업데이트하겠다고 한다.[^24]
마지막에 짧게 종료 발화가 나온다.[^25]
4. 핵심 통찰[^1]
- 앱 배포는 “빌드 한 번”이 아니라 리소스(아이콘) → 서명(키) → 설정 점검 → AAB 빌드 → 콘솔 업로드/검증 → 정책/등록정보/그래픽/테스트 → 출시로 이어지는 체계적인 절차다.[^1][^20]
- 실행: 업로드 전에 체크리스트를 만들고(아이콘/키/Manifest/Gradle/version/applicationId) 단계별로 처리한다.[^9][^10]
- [h 서명 키 설정은 배포의 관문]이며, 키스토어 생성 후
key.properties와 Gradle 연결을 해두면 이후 릴리즈 빌드가 반복 가능해진다.[^6][^7][^8]
- 실행: 키스토어/키 비밀번호를 안전하게 보관하고, 빌드 환경에서 참조되는 파일 위치/값을 표준화한다.[^6][^7]
- Play Console 업로드 에러는 대체로 applicationId 유니크 문제와 versionCode 증가 규칙 위반에서 많이 터진다.[^17][^19]
- 실행:
- applicationId는 처음부터 도메인 기반으로 유니크하게 설계하고, 변경이 필요하면
rename같은 도구로 일괄 변경한다.[^17][^18] - 배포 때마다
pubspec.yaml의+버전코드를 증가시키는 습관을 만든다.[^11][^20]
- applicationId는 처음부터 도메인 기반으로 유니크하게 설계하고, 변경이 필요하면
- 앱을 “올리는 것”과 “출시되는 것”은 다르다. 업로드 후에도 개인정보처리방침, 스토어 설명, 그래픽(스크린샷/영상), 테스팅 같은 출시 요건을 채워야 한다.[^20][^21][^23]
- 실행: 업로드 후 콘솔의 경고/에러 메시지를 먼저 해결하고, 그 다음 등록정보/정책/그래픽을 집중적으로 채운다.[^20]
- 기술적으로 완성된 앱이라도, 유저가 이해하고 설치하도록 만드는 것은 별개의 과제다. 영상은 특히 **그래픽과 설명(디스크립션)**을 “다운로드를 좌우하는 요소”로 강조한다.[^22][^23]
- 실행: 스토어 페이지를 제품 소개 페이지처럼 다듬고, 이미지/영상 스펙을 준수해 첫인상을 설계한다.[^23]
5. 헷갈리는 용어 정리 (해당 시에만)[^2]
AAB(App Bundle): Play Store 업로드에 사용하는 안드로이드 앱 번들 파일 형식. 영상에서는 flutter build appbundle로 생성 후 콘솔에 업로드한다.[^12]
APK: (영상 맥락에서) 사용자가 직접 다운로드해 설치할 수 있는 패키지 형식으로 언급되며, 디플로이먼트 키가 APK에 존재한다고 설명한다.[^5]
디지털 시그니처(서명): 앱 배포 시 “앱 주인”을 증명하기 위해 앱에 포함해야 하는 서명 정보라고 설명한다.[^4]
키스토어(keystore): 업로드 키를 담는 파일로, 생성 시 비밀번호 및 사용자/조직 정보를 입력해 만든다.[^6]
업로드 키(Upload key): Play Store 배포 파이프라인에서 사용하는 서명 키로 소개되며, 영상은 이를 생성/프로젝트에 연결하는 흐름을 따른다.[^5][^7]
applicationId: 다른 앱과 구분되는 유니크한 앱 식별자. 중복이면 업로드 에러가 발생하며 rename 패키지로 변경하는 과정을 보여준다.[^10][^17][^18]
versionCode: 정수(integer)이며, Play Store 업로드 시마다 기존보다 반드시 크게 올려야 하는 값. pubspec.yaml의 +숫자에 해당한다고 설명한다.[^11][^20]
versionName: 문자열(string) 버전명으로, 사용자에게 보이는 버전 표기이며 원하는 방식으로 만들 수 있다고 설명한다.[^12]
테스터 리스트(Tester list): 알파 테스트 설정에 사용하는 이메일 목록으로, 본인 이메일을 넣어 직접 다운로드/테스트할 수 있다고 설명한다.[^24]
참고(콘텐츠 정보)[^1]
- 제목: Flutter 안드로이드 앱 배포 2023 | 구글 Play Store[^1]
- 채널: The Coding Papa 더코딩파파[^1]
- 길이: 13분 7초[^1]
- 링크: https://www.youtube.com/watch?v=1KYEPKRVFZA[^1]
[^1]: @[00:00] “플러터로 어플리케이션을 만들긴 했는데 어떻게 업로드 하는지 몰라서… 아이콘 제작부터… 빌드… 구글 플레이 스토어에 업로드하는 것까지 하나하나 자세히…”
[^2]: @[00:18] “앱 아이콘… 적어도 192 사이즈… 배경이 없는 png… 프로젝트 루… 에셋 폴더… 아이콘 폴더…”
[^3]: @[00:41] “플러터 런치 아이콘… pubspec.yaml… 코드 입력… 이미지 파일 경로… 터미널… flutter pub get… 아이콘 자동 명령어 실행… 생성 확인…”
[^4]: @[01:30] “res… 런처 아이콘 png… AndroidManifest.xml… 이미지 파일명… 생성 안 되면… 베이스 이미지… 디지털 시그니처… 두 개 타입 사인 키…”
[^5]: @[02:12] “디플로이먼트… 업로드… apk… 구글 추천 업로드 키… 맥/리눅스 터미널… 윈도우 파워쉘… 명령어 다르다”
[^6]: @[02:40] “키스토어 비밀번호… 이름/회사/주소… yes… 키 비밀번호… 두 가지 비밀번호… 동일한 비밀번호 사용하면 된다… 업로드 키스토어 생성”
[^7]: @[03:20] “키스토어 파일을… 프로젝트에서 사용… 두 가지… key properties 파일… 빌드 그레이들에서 사용… 네 가지 정보… keyAlias upload…”
[^8]: @[04:03] “android/app… build… android 키워드 이전… 키스토어 연결 코드… 빌드될 때 해당 키스토어 사용… buildTypes… signingConfig…”
[^9]: @[04:43] “빌드하기 전에… 인터넷 퍼미션… debug manifest에는 있고 main에는 없다… application 바로 위… android:label 유저들이 보는 앱 이름…”
[^10]: @[05:28] “build.gradle… Android 태그 안에 세 가지 값… applicationId… 유니크한 아이디… 나중에 보여준다… version… 1.0.0 + 1…”
[^11]: @[06:14] “버전 코드는 무조건 인티저… 업로드 할 때마다… 반드시 높게…”
[^12]: @[06:25] “버전 네임… 스트링… flutter build appbundle… 앱번들 파일 확인… 링크 클릭…”
[^13]: @[07:18] “가입… 돈… 딱 한 번만… identity 이것도 해야 된다”
[^14]: @[07:29] “verify identity… 아이디 등록… 실제 법적 이름… 여권/주민증/운전면허증… 이미지 업로드… 주소… 확인하는 동안 업로드 가능… create app…”
[^15]: @[08:28] “테스트… 테스팅 방법… 선택… 테스팅 마치고 퍼블리시… create a new release…”
[^16]: @[08:50] “키를 선택… 업로드 키… 구글 플레이 스토어에는 구글 제너레이 키… 키 클릭”
[^17]: @[09:31] “앱 번들 에러… applicationId 유니크하지 않아서… 바꾸는 방법 두 가지… 패키지 사용… rename 패키지…”
[^18]: @[09:49] “명령어 입력… applicationId 변경… com…demo 부분을 원하는 유니크한 아이디로…”
[^19]: @[10:06] “build.gradle… applicationId 확인… 다시 빌드/업로드… 버전 코드 에러…”
[^20]: @[10:52] “+ 이후 번호 올린 후 다시 빌드… 에러 없는 업로드… Next… 업로드만 하면 끝이 아님… 많은 것 작성…”
[^21]: @[11:34] “privacy policy… 정부에서… 쉽게 만들 프로그램… 개인정보 처리 방침 쉽게…”
[^22]: @[11:51] “기능을 효율적으로 설명 못하면 다운로드 안 함… 구글 지원금도 꼭 받아서 광고…”
[^23]: @[12:07] “앱 네임… 쇼 디스크립션/풀 디스크립션… 가장 중요한 그래픽스… 제목 본 후 이미지/영상으로 훑어본다… 스페시피케이션…”
[^24]: @[12:48] “테스터 리스트 만들기… 내 이메일… 알파 테스트… 직접 다운로드… 테스트…”
[^25]: @[13:06] “n”