获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

Dystrybuuj aplikacje na Androida do testerów za pomocą Gradle

Możesz zintegrować dystrybucję aplikacji z procesem kompilacji Androida za pomocą wtyczki App Distribution Gradle. Wtyczka umożliwia określenie testerów i informacji o wydaniu w pliku build.gradle Twojej aplikacji, co pozwala skonfigurować dystrybucje dla różnych typów kompilacji i wariantów Twojej aplikacji.

W tym przewodniku opisano, jak rozsyłać pliki APK do testerów za pomocą wtyczki App Distribution Gradle.

Zanim zaczniesz

Jeśli jeszcze tego nie zrobiłeś, dodaj Firebase do swojego projektu na Androida .

Jeśli nie używasz żadnych innych produktów Firebase, wystarczy utworzyć projekt i zarejestrować swoją aplikację. Jeśli jednak zdecydujesz się w przyszłości korzystać z dodatkowych produktów, pamiętaj o wykonaniu wszystkich kroków na stronie, do której prowadzi link powyżej.

Krok 1. Skonfiguruj swój projekt na Androida

  1. W pliku Gradle na poziomie głównym (na poziomie projektu) ( <project>/build.gradle lub <project>/build.gradle.kts ) dodaj wtyczkę App Distribution Gradle jako zależność buildscript:

    Groovy

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

    Kotlin

    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")
      }
    }
    
  2. W pliku Gradle modułu (na poziomie aplikacji) (zazwyczaj <project>/<app-module>/build.gradle lub <project>/<app-module>/build.gradle.kts ) dodaj wtyczkę App Distribution Gradle:

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

    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")
    }
    
  3. Jeśli korzystasz z firmowego serwera proxy lub zapory sieciowej, dodaj następującą właściwość systemu Java, która umożliwia usłudze App Distribution przesyłanie dystrybucji do Firebase:

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

Krok 2. Uwierzytelnij w Firebase

Zanim będziesz mógł użyć wtyczki Gradle, musisz najpierw uwierzytelnić się w swoim projekcie Firebase na jeden z poniższych sposobów. Domyślnie wtyczka Gradle szuka poświadczeń z Firebase CLI, jeśli nie jest używana żadna inna metoda uwierzytelniania.

Krok 3. Skonfiguruj właściwości dystrybucji

W pliku Gradle modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle lub <project>/<app-module>/build.gradle.kts ) skonfiguruj dystrybucję aplikacji, dodając co najmniej jedna sekcja firebaseAppDistribution .

Na przykład, aby rozesłać kompilację release do testerów, postępuj zgodnie z tymi instrukcjami:

Groovy

android {

  // ...

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

  // ...
}

Kotlin

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

  // ...
}

Możesz skonfigurować Dystrybucję aplikacji dla typów kompilacji i smaków produktów .

Na przykład, aby dystrybuować kompilacje debug i release w „demo” i „pełnej” wersji produktu, postępuj zgodnie z tymi instrukcjami:

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

  // ...
}

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

  // ...
}

Użyj następujących parametrów, aby skonfigurować dystrybucję:

Parametry kompilacji dystrybucji aplikacji
appId

Identyfikator aplikacji Firebase Twojej aplikacji. Wymagane tylko wtedy, gdy nie masz zainstalowanej wtyczki Google Services Gradle. Identyfikator aplikacji można znaleźć w pliku google-services.json lub w konsoli Firebase na stronie Ustawienia ogólne . Wartość w pliku build.gradle zastępuje wartość wyjściową wtyczki google-services .

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

Ścieżka do pliku JSON klucza prywatnego konta usługi. Wymagane tylko w przypadku korzystania z uwierzytelniania konta usługi.

artifactType

Określa typ pliku Twojej aplikacji. Można ustawić na "AAB" lub "APK" .

artifactPath

Ścieżka bezwzględna do pliku APK lub AAB, który chcesz przesłać.

releaseNotes lub releaseNotesFile

Informacje o wersji dla tej kompilacji.

Możesz bezpośrednio określić informacje o wersji lub ścieżkę do zwykłego pliku tekstowego.

testers lub testersFile

Adresy e-mail testerów, do których chcesz dystrybuować kompilacje.

Możesz określić testerów jako listę adresów e-mail oddzielonych przecinkami:

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

Możesz też określić ścieżkę do pliku zawierającego oddzieloną przecinkami listę adresów e-mail:

testersFile="/path/to/testers.txt"
groups lub groupsFile grup

Grupy testerów, do których chcesz dystrybuować kompilacje (zobacz Zarządzanie testerami ). Grupy są określane za pomocą pseudonimy grupowe , które znajdziesz na karcie Testerzy w konsoli Firebase App Distribution.

Możesz określić grupy jako listę oddzielonych przecinkami aliasów grup:

groups="qa-team, android-testers"

Lub możesz określić ścieżkę do pliku zawierającego oddzieloną przecinkami listę aliasów grup:

groupsFile="/path/to/tester-groups.txt"
stacktrace

Drukuje ślad stosu dla wyjątków użytkownika. Jest to pomocne podczas debugowania problemów.

Krok 4. Rozpowszechnij swoją aplikację wśród testerów

  1. Na koniec, aby spakować aplikację testową i zaprosić testerów, zbuduj cele BUILD-VARIANT i appDistributionUpload BUILD-VARIANT z opakowaniem Gradle projektu, gdzie BUILD-VARIANT to opcjonalny smak produktu i typ kompilacji skonfigurowany w poprzednim kroku. Aby uzyskać więcej informacji o wersjach produktów, zobacz Konfigurowanie wariantów kompilacji .

    Na przykład, aby dystrybuować aplikację przy użyciu wariantu kompilacji release , uruchom następujące polecenie:

    ./gradlew assembleRelease appDistributionUploadRelease
    

    Lub, jeśli uwierzytelniłeś się za pomocą swojego konta Google i nie podałeś poświadczeń w pliku kompilacji Gradle, dołącz zmienną FIREBASE_TOKEN :

    export FIREBASE_TOKEN=1/a1b2c3d4e5f67890
    ./gradlew --stop // Only needed for environment variable changes
    ./gradlew assembleRelease appDistributionUploadRelease
    
  2. Możesz także zastąpić wartości ustawione w pliku build.gradle , przekazując argumenty wiersza poleceń w postaci --<property-name>=<property-value> . Na przykład:

    • Aby przesłać kompilację debugowania do dystrybucji aplikacji:

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="APK"
      
    • Aby zaprosić dodatkowych testerów lub usunąć istniejących testerów z projektu 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"
      

      Po dodaniu testera do projektu Firebase możesz dodać go do poszczególnych wersji. Usunięci testerzy nie będą już mieli dostępu do wersji w Twoim projekcie, ale mogą zachować dostęp do Twoich wersji przez pewien czas.

    Możesz także określić testerów za pomocą --file="/path/to/testers.txt" zamiast --emails .

    Zadania appDistributionAddTesters i appDistributionRemoveTesters akceptują również następujące argumenty:

    • projectNumber : Twój numer projektu Firebase.

    • serviceCredentialsFile : ścieżka do pliku danych logowania do usługi Google. Jest to ten sam argument, którego używa akcja przesyłania.

Wtyczka Gradle wyświetla następujące linki po przesłaniu wersji. Te łącza pomagają zarządzać plikami binarnymi i zapewniają, że testerzy i inni programiści mają odpowiednią wersję:

  • firebase_console_uri — łącze do konsoli Firebase wyświetlającej jedną wersję. Możesz udostępnić ten link innym programistom w swojej organizacji.
  • testing_uri — link do wersji w środowisku testera (aplikacja natywna dla systemu Android), który umożliwia testerom wyświetlanie informacji o wersji i instalowanie aplikacji na urządzeniu. Tester musi mieć dostęp do wersji, aby użyć łącza.
  • binary_download_uri — podpisany link, który bezpośrednio pobiera i instaluje plik binarny aplikacji (plik APK lub AAB). Link wygasa po godzinie.

Po rozpowszechnieniu kompilacji staje się ona dostępna na pulpicie nawigacyjnym Dystrybucja aplikacji w konsoli Firebase przez 150 dni (pięć miesięcy). Gdy kompilacja wygaśnie za 30 dni, powiadomienie o wygaśnięciu pojawi się zarówno w konsoli, jak i na liście kompilacji testera na jego urządzeniu testowym.

Testerzy, którzy nie zostali zaproszeni do testowania aplikacji, otrzymują e-maile z zaproszeniami do rozpoczęcia, a obecni testerzy otrzymują powiadomienia e-mail, że nowa kompilacja jest gotowa do przetestowania (przeczytaj przewodnik konfiguracji testera, aby dowiedzieć się, jak zainstalować aplikację testową). Możesz monitorować status każdego testera – czy zaakceptował zaproszenie i czy pobrał aplikację – w konsoli Firebase.

Testerzy mają 30 dni na zaakceptowanie zaproszenia do przetestowania aplikacji przed jego wygaśnięciem. Gdy zaproszenie wygaśnie za 5 dni, w konsoli Firebase obok testera pojawi się powiadomienie o wygaśnięciu. Zaproszenie można odnowić, wysyłając je ponownie, korzystając z menu rozwijanego w wierszu testera.

Następne kroki