앱 배포 Gradle 플러그인을 사용하여 앱 배포를 Android 빌드 프로세스에 통합할 수 있습니다. 플러그인을 사용하면 앱의 build.gradle
파일에서 테스터 및 릴리스 정보를 지정할 수 있으므로 앱의 다양한 빌드 유형 및 변형에 대한 배포를 구성할 수 있습니다.
이 가이드에서는 App Distribution Gradle 플러그인을 사용하여 테스터에게 APK를 배포하는 방법을 설명합니다.
시작하기 전에
아직 추가하지 않았다면 Android 프로젝트에 Firebase를 추가합니다 .
다른 Firebase 제품을 사용하지 않는 경우 프로젝트를 만들고 앱을 등록하기만 하면 됩니다. 그러나 향후 추가 제품을 사용하기로 결정한 경우 위에 링크된 페이지의 모든 단계를 완료해야 합니다.
1단계. Android 프로젝트 설정
루트 수준(프로젝트 수준) Gradle 파일(
또는<project>/build.gradle
)에서 App Distribution Gradle 플러그인을 buildscript 종속성으로 추가합니다.<project>/build.gradle.kts 그루비
buildscript { repositories { // Make sure that you have the following two repositories google() // Google's Maven repository mavenCentral() // Maven Central repository } dependencies { ... classpath 'com.android.tools.build:gradle:7.2.0' // Make sure that you have the Google services Gradle plugin dependency classpath 'com.google.gms:google-services:4.3.15' // Add the dependency for the App Distribution Gradle plugin classpath 'com.google.firebase:firebase-appdistribution-gradle:3.2.0' } }
코틀린
buildscript { repositories { // Make sure that you have the following two repositories google() // Google's Maven repository mavenCentral() // Maven Central repository } dependencies { ... classpath("com.android.tools.build:gradle:7.2.0") // Make sure that you have the Google services Gradle plugin dependency classpath("com.google.gms:google-services:4.3.15") // Add the dependency for the App Distribution Gradle plugin classpath("com.google.firebase:firebase-appdistribution-gradle:3.2.0") } }
모듈(앱 수준) Gradle 파일(일반적으로
또는<project>/<app-module>/build.gradle
)에서 App Distribution Gradle 플러그인을 추가합니다.<project>/<app-module>/build.gradle.kts 그루비
plugins { id 'com.android.application' // Make sure that you have the Google services Gradle plugin id 'com.google.gms.google-services' // Add the App Distribution Gradle plugin id 'com.google.firebase.appdistribution' }
코틀린
plugins { id("com.android.application") // Make sure that you have the Google services Gradle plugin id("com.google.gms.google-services") // Add the App Distribution Gradle plugin id("com.google.firebase.appdistribution") }
회사 프록시 또는 방화벽 뒤에 있는 경우 앱 배포가 배포를 Firebase에 업로드할 수 있도록 하는 다음 Java 시스템 속성 을 추가합니다.
-Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
2단계. Firebase로 인증
Gradle 플러그인을 사용하려면 먼저 다음 방법 중 하나로 Firebase 프로젝트에 인증해야 합니다. 기본적으로 Gradle 플러그인은 다른 인증 방법이 사용되지 않는 경우 Firebase CLI에서 사용자 인증 정보를 찾습니다.
서비스 계정으로 인증하면 지속적 통합(CI) 시스템에서 플러그인을 유연하게 사용할 수 있습니다. 서비스 계정 사용자 인증 정보를 제공하는 방법에는 두 가지가 있습니다.
- 서비스 계정 키 파일을
build.gradle
에 전달합니다. 빌드 환경에 서비스 계정 키 파일이 이미 있는 경우 이 방법이 편리할 수 있습니다. - 서비스 계정 키 파일을 가리키도록 환경 변수
GOOGLE_APPLICATION_CREDENTIALS
를 설정합니다. 다른 Google 서비스(예: Google Cloud)에 대해 애플리케이션 기본 자격 증명(ADC)을 이미 구성한 경우 이 방법을 선호할 수 있습니다.
서비스 계정 사용자 인증 정보를 사용하여 인증하려면 다음 안내를 따르세요.
- Google Cloud Console에서 프로젝트를 선택하고 새 서비스 계정을 만듭니다.
- Firebase 앱 배포 관리자 역할을 추가합니다.
- 개인 json 키를 만들고 빌드 환경에 액세스할 수 있는 위치로 키를 이동합니다. Firebase 프로젝트의 앱 배포에 대한 관리자 액세스 권한을 부여 하므로 이 파일을 안전한 곳에 보관 하십시오.
- 2019년 9월 20일 이후에 앱을 만든 경우 이 단계를 건너뜁니다. Google API 콘솔에서 Firebase 앱 배포 API를 활성화합니다. 메시지가 표시되면 Firebase 프로젝트와 이름이 같은 프로젝트를 선택합니다.
서비스 계정 자격 증명을 제공하거나 찾습니다.
- Gradle에 서비스 계정 키를 전달하려면
build.gradle
파일에서serviceCredentialsFile
속성을 비공개 키 JSON 파일로 설정합니다. ADC로 자격 증명을 찾으려면 환경 변수
GOOGLE_APPLICATION_CREDENTIALS
를 개인 키 JSON 파일의 경로로 설정합니다. 예:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
ADC 인증에 대한 자세한 내용은 애플리케이션에 자격 증명 제공을 참조하세요.
- Gradle에 서비스 계정 키를 전달하려면
프로젝트 인증 방법에 대한 안내 는 Firebase CLI로 로그인을 참조하세요.
3단계. 배포 속성 구성
모듈(앱 수준) Gradle 파일(일반적으로
또는
)에서 최소한 추가하여 앱 배포를 구성합니다. 하나의 firebaseAppDistribution
섹션.
예를 들어 release
빌드를 테스터에게 배포하려면 다음 지침을 따르세요.
그루비
android { // ... buildTypes { release { firebaseAppDistribution { artifactType="APK" releaseNotesFile="/path/to/releasenotes.txt" testers="ali@example.com, bri@example.com, cal@example.com" } } } // ... }
코틀린
import com.google.firebase.appdistribution.gradle.firebaseAppDistribution android { // ... buildTypes { release { firebaseAppDistribution { artifactType = "APK" releaseNotesFile = "/path/to/releasenotes.txt" testers = "ali@example.com, bri@example.com, cal@example.com" } } } // ... }
빌드 유형 및 제품 버전 에 대한 앱 배포를 구성할 수 있습니다.
예를 들어 debug
및 release
빌드를 "데모" 및 "전체" 제품 버전으로 배포하려면 다음 지침을 따르십시오.
그루비
android { // ... buildTypes { debug {...} release {...} } flavorDimensions "version" productFlavors { demo { dimension "version" firebaseAppDistribution { releaseNotes="Release notes for demo version" testers="demo@testers.com" } } full { dimension "version" firebaseAppDistribution { releaseNotes="Release notes for full version" testers="full@testers.com" } } } // ... }
코틀린
import com.google.firebase.appdistribution.gradle.firebaseAppDistribution android { // ... buildTypes { getByName("debug") {...} getByName("release") {...} } flavorDimensions += "version" productFlavors { create("demo") { dimension = "version" firebaseAppDistribution { releaseNotes = "Release notes for demo version" testers = "demo@testers.com" } } create("full") { dimension = "version" firebaseAppDistribution { releaseNotes = "Release notes for full version" testers = "full@testers.com" } } } // ... }
다음 매개변수를 사용하여 배포를 구성합니다.
앱 배포 빌드 매개변수 | |
---|---|
appId | 앱의 Firebase 앱 ID입니다. Google Services Gradle 플러그인이 설치되어 있지 않은 경우에만 필요합니다. appId="1:1234567890:android:321abc456def7890" |
serviceCredentialsFile | 서비스 계정 비공개 키 JSON 파일의 경로입니다. 서비스 계정 인증을 사용하는 경우에만 필요합니다. |
artifactType | 앱의 파일 형식을 지정합니다. |
artifactPath | 업로드하려는 APK 또는 AAB 파일의 절대 경로입니다. |
releaseNotes 또는 releaseNotesFile | 이 빌드에 대한 릴리스 정보입니다. 릴리스 정보를 직접 지정하거나 일반 텍스트 파일의 경로를 지정할 수 있습니다. |
testers 또는 testersFile | 빌드를 배포하려는 테스터의 이메일 주소입니다. 테스터를 쉼표로 구분된 이메일 주소 목록으로 지정할 수 있습니다. testers="ali@example.com, bri@example.com, cal@example.com" 또는 쉼표로 구분된 이메일 주소 목록이 포함된 파일의 경로를 지정할 수 있습니다. testersFile="/path/to/testers.txt" |
groups 또는 그룹 groupsFile | 빌드를 배포하려는 테스터 그룹( 테스터 관리 참조). 그룹은 다음을 사용하여 지정됩니다. 그룹을 쉼표로 구분된 그룹 별칭 목록으로 지정할 수 있습니다. groups="qa-team, android-testers" 또는 쉼표로 구분된 그룹 별칭 목록이 포함된 파일의 경로를 지정할 수 있습니다. groupsFile="/path/to/tester-groups.txt" |
stacktrace | 사용자 예외에 대한 스택 추적을 인쇄합니다. 이는 문제를 디버깅할 때 유용합니다. |
4단계. 테스터에게 앱 배포
마지막으로 테스트 앱을 패키징하고 테스터를 초대하려면 프로젝트의 Gradle 래퍼를 사용하여 대상
BUILD-VARIANT
및appDistributionUpload BUILD-VARIANT
를 빌드합니다. 여기서 BUILD-VARIANT 는 이전 단계에서 구성한 선택적 제품 버전 및 빌드 유형입니다. 제품 버전에 대한 자세한 내용은 빌드 변형 구성 을 참조하십시오.예를 들어
release
빌드 변형을 사용하여 앱을 배포하려면 다음 명령을 실행합니다../gradlew assembleRelease appDistributionUploadRelease
또는 Google 계정 으로 인증했고 Gradle 빌드 파일에 자격 증명을 제공하지 않은 경우
FIREBASE_TOKEN
변수를 포함합니다.export FIREBASE_TOKEN=1/a1b2c3d4e5f67890 ./gradlew --stop // Only needed for environment variable changes ./gradlew assembleRelease appDistributionUploadRelease
--<property-name>=<property-value>
형식으로 명령줄 인수를 전달하여build.gradle
파일에 설정된 값을 재정의할 수도 있습니다. 예를 들어:앱 배포에 디버그 빌드를 업로드하려면:
./gradlew bundleDebug appDistributionUploadDebug --artifactType="APK"
추가 테스터를 초대하거나 Firebase 프로젝트에서 기존 테스터를 삭제하려면 다음 단계를 따르세요.
./gradlew appDistributionAddTesters --projectNumber=<project_number> --emails="anothertester@email.com, moretesters@email.com"
./gradlew appDistributionRemoveTesters --projectNumber=<project_number> --emails="anothertester@email.com, moretesters@email.com"
테스터가 Firebase 프로젝트에 추가되면 개별 릴리스에 추가할 수 있습니다. 제거된 테스터는 더 이상 프로젝트의 릴리스에 액세스할 수 없지만 일정 기간 동안 릴리스에 계속 액세스할 수 있습니다.
--emails 대신
--file="/path/to/testers.txt"
--emails
" 를 사용하여 테스터를 지정할 수도 있습니다.appDistributionAddTesters
및appDistributionRemoveTesters
작업은 다음 인수도 허용합니다.projectNumber
: Firebase 프로젝트 번호입니다.serviceCredentialsFile
: Google 서비스 사용자 인증 정보 파일의 경로입니다. 업로드 작업에서 사용하는 것과 동일한 인수입니다.
Gradle 플러그인은 릴리스 업로드 후 다음 링크를 출력합니다. 다음 링크는 바이너리를 관리하고 테스터와 다른 개발자가 올바른 릴리스를 갖도록 하는 데 도움이 됩니다.
-
firebase_console_uri
- 단일 릴리스를 표시하는 Firebase 콘솔 링크입니다. 조직의 다른 개발자와 이 링크를 공유할 수 있습니다. -
testing_uri
- 테스터가 출시 정보를 보고 기기에 앱을 설치할 수 있는 테스터 환경(Android 네이티브 앱)의 출시 링크입니다. 테스터가 링크를 사용하려면 릴리스에 액세스해야 합니다. -
binary_download_uri
- 앱 바이너리(APK 또는 AAB 파일)를 직접 다운로드하고 설치하는 서명된 링크입니다. 링크는 1시간 후에 만료됩니다.
빌드를 배포하면 Firebase 콘솔의 앱 배포 대시보드에서 150일(5개월) 동안 사용할 수 있습니다. 빌드가 만료되기까지 30일이 지나면 콘솔과 테스터의 테스트 기기 빌드 목록에 만료 알림이 나타납니다.
앱 테스트에 초대되지 않은 테스터는 시작하라는 이메일 초대를 받고, 기존 테스터는 새 빌드가 테스트할 준비가 되었다는 이메일 알림을 받습니다(테스트 앱 설치 방법에 대한 지침은 테스터 설정 가이드 참조). Firebase 콘솔에서 각 테스터의 상태(초대 수락 여부 및 앱 다운로드 여부)를 모니터링할 수 있습니다.
테스터는 앱이 만료되기 전에 30일 이내에 앱 테스트 초대를 수락해야 합니다. 초대가 만료되기까지 5일이 지나면 Firebase 콘솔에서 릴리스의 테스터 옆에 만료 알림이 표시됩니다. 테스터 행의 드롭다운 메뉴를 사용하여 초대를 다시 보내면 초대를 갱신할 수 있습니다.
다음 단계
Android App Bundle Codelab 을 방문하여 App Bundle 출시를 단계별로 배포하는 방법을 알아보세요.
CI/CD를 사용하여 QA 테스터에게 Android 앱을 배포 하는 모범 사례를 알아보세요.