Android 내부 테스트와 App Distribution
서명된 Android 빌드를 Play 내부 테스트와 Firebase App Distribution에 올리고 실제 설치까지 확인하는 절차입니다.
목차
Google Play 출시 개요에 이어 실제 테스트 빌드를 배포합니다. Play 내부 테스트는 Play 스토어를 통한 설치 경로이고, Firebase App Distribution은 별도 테스트 배포 경로입니다. 한쪽에 업로드해도 다른 쪽의 출시가 바뀌지 않습니다.
준비물
등록된 Play 개발자 계정과 앱, 업로드 서명 키, 검증할 Flutter 소스 및 대상 테스터 계정을 준비합니다. Firebase 배포를 함께 사용할 때는 Android 앱 등록도 마칩니다.
단계
- 서명된 AAB와 APK를 만들고 패키지·버전을 검증합니다.
- Play 내부 테스트에 AAB를 게시하고 테스터로 설치합니다.
- 필요하면 App Distribution에 APK를 별도로 배포합니다.
앱 등록과 빌드
- Play Console에서 앱을 만들고 이름·기본 언어·앱 유형 등을 입력합니다. 계정에 요구되는 연락처·번호 인증을 마칩니다.
- 앱의 패키지 이름과 Firebase Android 앱을 대조합니다.
- 업로드 서명 키와 암호를 저장소 밖에 보관하고 release 빌드에 연결합니다.
- 새 빌드는 이전 업로드보다 높은 versionCode를 사용합니다. Play용 AAB와 직접 설치용 APK를 구분합니다.
flutter build appbundle --release --build-number=3
flutter build apk --release --build-number=3
숫자 3은 예시입니다. 앱의 기존 출시 이력에 맞춰 정하고, 제품별 flavor·환경 구성·서명 설정을 추가합니다. 빌드 후 패키지·버전·서명을 검사하고 파일 해시를 기록합니다. AAB는 기기에 APK처럼 직접 설치하지 않습니다.
Play 내부 테스트 출시
- 테스트 → 내부 테스트에서 새 출시를 만듭니다.
- 서명된 AAB를 올리고 처리 결과, 버전, 오류와 경고를 확인합니다.
- 출시 이름과 변경 내용을 작성합니다. 저장만 한 초안과 실제 출시 상태를 구분합니다.
- 테스터 탭에서 대상 이메일 목록 또는 그룹을 선택하고 저장합니다.
- 출시 검토 후 내부 테스트를 게시합니다. 콘솔에 남은 필수 작업이 있으면 먼저 처리합니다.
- 참여 링크를 대상 테스터에게 전달하고, 등록된 Google 계정으로 참여한 뒤 Play에서 설치합니다.
완료 확인: 내부 트랙에 해당 versionCode가 활성 상태인지 재조회하고, 실제 테스터가 설치한 앱의 버전·로그인·서버 연결을 확인합니다. 참여 링크 생성이나 업로드 성공만으로 설치 검증까지 끝난 것은 아닙니다.
Play 앱 서명 인증서의 SHA-1·SHA-256을 Firebase에 등록합니다. 업로드 인증서만 등록하면 직접 설치한 APK에서는 동작하던 인증이 Play 설치본에서 실패할 수 있습니다.
Bottari FX는 내부 테스트 0.1.0 (1) 수동 출시가 기록되어 있습니다. 이후 App Distribution에 올린 0.1.0 (2)가 Play에도 배포되었다고 해석하면 안 됩니다.
Firebase App Distribution
- Firebase Console → App Distribution에서 정확한 Android 앱을 선택합니다.
- 서명된 APK를 업로드하고 처리 완료 후 버전·빌드 번호를 확인합니다.
- 출시 노트에 변경 내용과 아직 검증하지 않은 항목을 적습니다.
- 대상 테스터 또는 그룹에 배포하고, 초대 수락 → 설치 → 실행 결과를 확인합니다.
CLI가 준비되지 않은 환경에서는 공식 REST 업로드 API를 사용할 수 있습니다. 업로드 operation의 완료 여부와 오류를 확인하고, 릴리스 정보를 재조회합니다. 액세스 토큰과 만료되는 다운로드 URL을 로그나 공개 문서에 남기지 않습니다.
Bottari FX의 APK 0.1.0 (2)는 업로드 및 출시 노트 저장까지만 확인되었습니다. 테스터 초대 발송과 설치 검증은 완료 기록이 없습니다. 당시 화면에는 개인 연락처가 있어 공개 가이드에는 원본 이미지를 싣지 않았습니다.
자동화와 완료 기록
Play API 권한을 먼저 준비합니다. CI는 버전 번호 충돌 방지, 서명 비밀 주입, 빌드 검증, 내부 트랙 배포, 배포 결과 재조회를 포함해야 합니다. App Distribution과 Play의 작업 결과를 각각 남깁니다.
테스트 기록에는 빌드 번호·소스 커밋·아티팩트 해시·배포 경로·기기·검증 결과를 적습니다. 내부 테스트를 프로덕션 출시나 모든 신규 계정의 공개 출시 요건 충족으로 표시하지 않습니다.
확인
Play 내부 트랙의 활성 버전과 실제 설치 앱의 버전을 대조합니다. App Distribution은 업로드 완료, 테스터에게 배포, 설치 성공을 따로 기록합니다. 네트워크 연결·Google 로그인·번호 인증을 실제 기기에서 확인하세요.
자주 겪는 문제
App Distribution에 새 APK를 올렸는데 Play에는 이전 버전이 보여요.
서로 다른 배포 경로입니다. Play 내부 테스트에도 별도로 새 versionCode의 AAB를 업로드하고 출시해야 합니다.
다음 단계
업데이트 배포와 Bottari FX 작업 기록을 확인하세요.
출처
- support.google.com/googleplay/android-developer/answer/9845334
- developer.android.com/studio/publish/app-signing
- docs.flutter.dev/deployment/android
- firebase.google.com/docs/app-distribution/android/distribute-console
- firebase.google.com/docs/reference/app-distribution/rest/v1/upload.v1.projects.apps.releases/upload