Firebase App Distribution으로 전환한 이야기
-
2025년 05월 02일
안녕하세요, Cocone Engineering에서 클라이언트 엔지니어로 일하고 있는 IS입니다. 이번에는 테스트용 앱 배포를 Firebase App Distribution으로 이전한 사례를 소개합니다.
시작하며
저희 팀에서는 2025년 3월까지 AppCenter를 이용하여 사내 테스트용 앱을 배포하고 있었는데요, AppCenter가 2025년 3월 31일에 서비스가 종료된다고 하여 2025년 4월 이후부터는 대체할 앱 배포 방법이 필요하게 되었습니다. 그래서 이번에 Firebase App Distribution을 이용하게 되어 AppCenter에서 이전 작업을 진행하게 되었습니다.
Firebase 프로젝트 소개
Firebase 프로젝트를 생성하고, 해당 프로젝트 내에 앱을 추가하고 앱별로 App Distribution 시작 버튼을 눌러 기능을 활성화합니다.

(우리 팀에서는 이미 Firebase Cloud Messaging을 사용하고 있었기 때문에 프로젝트는 이미 생성되어 있었고, 앱도 프로덕션용과 알파 버전이 추가되어 있었습니다.)
여기서 문제가 하나 있습니다!
Firebase 프로젝트 내에 동일한 패키지 이름(iOS의 경우 번들 ID)의 앱은 등록할 수 없습니다.
지금까지 AppCenter에서는 QA용, 알파용, 베타용, 과금용 등 다양한 종류의 사내용 앱을 배포하고 있었고, 일부 앱은 동일한 패키지 이름으로 운영되고 있었습니다.
이를 방지하기 위해 Firebase 프로젝트를 하나 더 생성하여 두 개의 Fireabase 프로젝트로 나누어 운영하기로 했습니다..
업로드 해보기
Firebase 프로젝트 작업이 끝나면 실제로 앱을 업로드해 보겠습니다.
-
-
- Firebase CLI 설치
npm install -g firebase-tools - 프라이빗 키 생성하기

프로젝트 설정에서 프라이빗 키를 생성하고, 다운로드합니다. - 역할 설정a.다음 3가지 역할을 서비스 계정에 추가합니다.
ⅰ. Firebase App Distribution Admin SDK 서비스 에이전트
ⅱ. Firebase Service Management 서비스 에이전트
ⅲ. 서비스 계정 토큰 생성자 - 환경 변수 추가
a. 서비스 계정으로 인증하기 위해 환경 변수 GOOGLE_APPLICATION_CREDENTIALS를 설정합니다.
b. 다운로드한 프라이빗 키를 적당한 위치에 둡니다.(이번에는 홈 디렉토리의 .firebase 아래에 둡니다).
c. .zshrc에 프라이빗 키의 경로를 추가합니다.export GOOGLE_APPLICATION_CREDENTIALS=$HOME/.firebase/private_key_xxx.jsond.경로를 반영합니다.
source ~/.zshrc5.테스터 등록
a. App Distribution의 테스터와 그룹으로 그룹을 생성하고, 자신의 이메일 주소를 추가합니다. (물론 본인 이외의 테스터도 등록할 수 있습니다.)
- Firebase CLI 설치
-
- 6.앱 업로드
a.Firebase CLI에서 업로드 해봅니다.firebase appdistribution:distribute /Users/test/android_alpha.apk \\--app {어플ID} --groups 'qa-team'7.앱 다운로드
- a.여기 (https://appdistribution.firebase.google.com/) 에서 다운로드가 가능한지 확인합니다.
- b.또는 업로드 시 테스터에게 초대 메일이 발송되므로 거기서 다운로드합니다.
Slack에 알림 보내기
Slack의 Webhook을 통해 알림을 보냅니다. (사전에 Webhook을 이용하기 위한 Slack의 App을 미리 준비해 둡니다.)
- Firebase CLI의 결과를 파일로 리다이렉트해 둡니.
firebase appdistribution:distribute /Users/test/android_alpha.apk \\--app {어플ID} --groups 'qa-team' > appdistribute.log - 업로드가 성공했을 경우의 결과는 다음과 같으며, 두 번째 URL이 테스터용 다운로드용 URL입니다.
i uploading binary... ✔ uploaded new release 1.00.1 (111) successfully! ✔ View this release in the Firebase console: <https://console.firebase.google.com/project/xxxxx> ✔ Share this release with testers who have access: <https://appdistribution.firebase.google.com/testerapps/xxxx> ✔ Download the release binary (link expires in 1 hour): <https://firebaseappdistribution.googleapis.com/app-binary-downloads/projects/xxxx> i updating release notes... ✔ added release notes successfully i distributing to testers/groups... ✔ distributed to testers/groups successfully - 다운로드용 URL을 추출합니다.
DOWNLOAD_URL=$(cat appdistribute.log | grep -oE 'https?://[^ ]+' | sed -n '2p') - Slack에 알림을 보냅니다.
curl -X POST -H 'Content-type: application/json' --data "{\\"text\\":\\"${DOWNLOAD_URL} \\"}" "<https://hooks.slack.com/services/xxxx>"
기타 궁금한 점
앱 다운로드 시 파일명이 모두 app.apk가 되어버린다 ……
AppCenter에서는 업로드 시 파일명으로 다운로드가 가능했는데, 여기서는 조금 불편합니다. 오래전부터 요청이 있었던 것 같은데, 2025년 4월 현재도 바뀌지 않은 것 같습니다
https://github.com/firebase/firebase-android-sdk/issues/5044