Gradle을 사용하여 Android 앱 배포


다음을 사용하여 App Distribution를 Android 빌드 프로세스에 통합할 수 있습니다. App Distribution Gradle 플러그인 플러그인을 사용하면 앱의 Gradle 파일에 테스터와 출시 노트를 지정하여 앱의 다양한 빌드 유형과 변형에 대한 배포를 구성할 수 있습니다.

이 가이드에서는 App Distribution Gradle 플러그인을 사용하여 테스터에 APK를 배포하는 방법을 설명합니다.

시작하기 전에

아직 추가하지 않았으면 Android 프로젝트에 Firebase를 추가합니다.

다른 Firebase 제품을 사용하지 않는 경우 프로젝트를 만들고 앱을 등록하기만 하면 됩니다. 그러나 이후에 추가 제품을 사용할 경우에는 위에 링크된 페이지의 모든 단계를 완료해야 합니다.

1단계: Android 프로젝트 설정

  1. 루트 수준 (프로젝트 수준) Gradle 파일에서 (<project>/build.gradle.kts 또는 <project>/build.gradle) App Distribution Gradle 플러그인을 종속 항목으로 포함합니다.

    Kotlin

    plugins {
        // ...
        id("com.android.application") version "7.3.0" apply false
    
        // Make sure that you have the Google services Gradle plugin dependency
        id("com.google.gms.google-services") version "4.4.2" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.0.0" apply false
    }

    Groovy

    plugins {
        // ...
        id 'com.android.application' version '7.3.0' apply false
    
        // Make sure that you have the Google services Gradle plugin dependency
        id 'com.google.gms.google-services' version '4.4.2' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.0.0' apply false
    }
  2. 모듈(앱 수준) Gradle 파일(일반적으로 <project>/<app-module>/build.gradle.kts 또는 <project>/<app-module>/build.gradle)에서 App Distribution Gradle 플러그인을 추가합니다.

    Kotlin

    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")
    }

    Groovy

    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'
    }
  3. 회사 프록시 또는 방화벽을 사용하는 경우 다음을 추가합니다. 자바 시스템 속성 그러면 App Distribution에서 Firebase에 배포를 업로드할 수 있습니다.

    -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
    

2단계: Firebase에 인증

Gradle 플러그인을 사용하려면 먼저 다음 방법 중 하나로 Firebase 프로젝트로 인증해야 합니다. 기본적으로 Gradle 플러그인은 다른 인증이 없으면 Firebase CLI에서 사용자 인증 정보를 찾습니다. 메서드가 사용됩니다.

3단계: 배포 속성 구성

모듈 (앱 수준) Gradle 파일 (일반적으로 <project>/<app-module>/build.gradle.kts 또는 <project>/<app-module>/build.gradle), 다음 위치에 추가하여 App Distribution를 구성합니다. firebaseAppDistribution 섹션이 하나 이상 있어야 합니다.

예를 들어 release 빌드를 테스터에게 배포하려면 다음 안내를 따르세요.

Kotlin

import com.google.firebase.appdistribution.gradle.firebaseAppDistribution

android {

  // ...

  buildTypes {
      getByName("release") {
          firebaseAppDistribution {
              artifactType = "APK"
              releaseNotesFile = "/path/to/releasenotes.txt"
              testers = "ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

  buildTypes {
      release {
          firebaseAppDistribution {
              artifactType="APK"
              releaseNotesFile="/path/to/releasenotes.txt"
              testers="ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

다음에 대해 App Distribution를 구성할 수 있습니다. 빌드 유형 및 제품 버전을 참조하세요.

예를 들어 'demo' 및 'full' 제품 버전에 debugrelease 빌드를 배포하려면 다음 안내를 따르세요.

Kotlin

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"
          }
      }
  }

  // ...
}

Groovy

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"
          }
      }
  }

  // ...
}

다음 매개변수를 사용하여 배포를 구성합니다.

빌드 매개변수 App Distribution
appId

앱의 Firebase 앱 ID입니다. Google 서비스 Gradle 플러그인이 설치되어 있지 않은 경우에만 필요합니다. 앱 ID는 다음 위치에서 확인할 수 있습니다. google-services.json 파일 또는 Firebase 콘솔의 일반 설정 페이지로 이동합니다. build.gradle의 값 파일은 google-services의 값 출력을 재정의합니다. 사용할 수 있습니다.

appId="1:1234567890:android:321abc456def7890"
serviceCredentialsFile

서비스 계정 비공개 키 JSON 파일의 경로입니다. 서비스 계정 인증을 사용할 경우에만 필요합니다.

artifactType

앱의 파일 유형을 지정합니다. "AAB" 또는 "APK"로 설정할 수 있습니다.

artifactPath

업로드하려는 APK 또는 AAB 파일의 절대 경로입니다.

releaseNotes 또는 releaseNotesFile

이 빌드의 출시 노트입니다.

출시 노트를 직접 지정하거나 일반 텍스트 파일의 경로를 지정할 수 있습니다.

testers 또는 testersFile

빌드를 배포할 테스터의 이메일 주소입니다.

쉼표로 구분된 이메일 주소 목록으로 테스터를 지정할 수 있습니다.

testers="ali@example.com, bri@example.com, cal@example.com"

또는 쉼표로 구분된 이메일 주소 목록이 포함된 파일의 경로를 지정할 수 있습니다.

testersFile="/path/to/testers.txt"
groups 또는 groupsFile

빌드를 배포할 테스터 그룹입니다. 테스터 관리를 참조하세요. 그룹은 그룹 별칭을 사용하여 지정되며 Firebase의 테스터 탭에서 App Distribution 콘솔

쉼표로 구분된 그룹 별칭 목록으로 그룹을 지정할 수 있습니다.

groups="qa-team, android-testers"

또는 쉼표로 구분된 그룹 별칭 목록이 포함된 파일의 경로를 지정할 수 있습니다.

groupsFile="/path/to/tester-groups.txt"
testDevices 또는 testDevicesFile

다음 배포 유형은 자동 테스터 베타 기능의 일부입니다.

빌드를 배포할 테스트 기기입니다. 자동 테스트를 참고하세요.

테스트 기기를 세미콜론으로 구분된 기기 목록이나 기기 사양:

testDevices="model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"

또는 세미콜론으로 구분된 기기 사양 목록:

testDevicesFile="/path/to/testDevices.txt"
testUsername

자동 테스트 중에 사용될 자동 로그인의 사용자 이름입니다.

testPassword 또는 testPasswordFile

자동 테스트 중에 사용할 자동 로그인의 비밀번호입니다.

또는 비밀번호가 포함된 일반 텍스트 파일의 경로를 지정할 수 있습니다.

testPasswordFile="/path/to/testPassword.txt"
testUsernameResource

자동 테스트 중에 사용할 자동 로그인의 사용자 이름 필드의 리소스 이름입니다.

testPasswordResource

자동 테스트 중에 사용할 자동 로그인 비밀번호 필드의 리소스 이름입니다.

testNonBlocking

자동 테스트를 비동기식으로 실행합니다. Firebase Console로 이동하여 자동 테스트 결과를 확인하세요.

stacktrace

사용자 예외의 스택 추적을 출력합니다. 이렇게 하면 문제를 디버깅할 때 유용합니다.

4단계: 테스터에 앱 배포

  1. 마지막으로 테스트 앱을 패키징하고 테스터를 초대하려면 BUILD-VARIANTappDistributionUploadBUILD-VARIANT 대상을 프로젝트의 Gradle 래퍼를 사용하여 빌드합니다. 여기서 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
    
  2. 또한 --<property-name>=<property-value> 형식으로 명령줄 인수를 전달하여 build.gradle 파일에 설정된 값을 재정의할 수 있습니다. 예를 들면 다음과 같습니다.

    • 디버그 빌드를 App Distribution에 업로드하려면 다음을 실행합니다.

      ./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"를 사용하여 테스터를 지정할 수도 있습니다.

    appDistributionAddTestersappDistributionRemoveTesters 태스크도 다음 인수가 허용됩니다.

    • projectNumber: Firebase 프로젝트 번호입니다.

    • serviceCredentialsFile: Google 서비스 사용자 인증 정보 파일의 경로입니다. 업로드 작업에 사용되는 동일한 인수입니다.

출시 버전 업로드 후 Gradle 플러그인은 다음 링크를 출력합니다. 다음 링크를 사용하면 바이너리를 관리하고 테스터 및 다른 개발자가 올바른 출시 버전을 사용할 수 있습니다.

  • firebase_console_uri - 다음을 표시하는 Firebase 콘솔 링크입니다. 싱글 릴리스를 발표합니다. 이 링크를 조직의 다른 개발자와 공유할 수 있습니다.
  • testing_uri - 테스터가 출시 노트를 보고 기기에 앱을 설치할 수 있는 테스터 환경(Android 네이티브 앱)의 출시 버전 링크입니다. 테스터가 링크를 사용하려면 출시 버전에 액세스할 수 있어야 합니다.
  • binary_download_uri - 앱 바이너리(APK 또는 AAB 파일)를 직접 다운로드하고 설치하는 서명된 링크입니다. 링크는 1시간 후에 만료됩니다.

빌드를 배포하면 150일 (5개월) 동안 Firebase 콘솔의 App Distribution 대시보드 빌드가 만료되기 30일 전부터 Console 및 테스트 기기의 빌드 테스트 목록 모두에 만료 알림이 표시됩니다.

신규 테스터는 앱 테스트를 시작할 수 있는 이메일 초대를 받으며 기존 테스터는 새 빌드가 테스트될 준비가 완료되었다는 이메일 알림을 받습니다(테스트 앱 설치 방법에 대한 안내는 테스터 설정 가이드 참조). 각 테스터의 상태, 즉 초대 및 Firebase 콘솔에서 앱을 다운로드했는지 여부

테스터는 초대 유효 기간(30일) 만료 전에 앱 테스트를 수락해야 합니다. 초대 만료일로부터 5일 후에 출시 버전의 테스터 옆에 있는 Firebase 콘솔 테스터 행의 드롭다운 메뉴를 사용하여 초대를 재전송하면 갱신할 수 있습니다.

다음 단계