Sie können App Distribution mit dem App Distribution Gradle-Plug-in in Ihren Android-Build-Prozess integrieren. Mit dem Plug-in können Sie Ihre Tester und Versionshinweise in build.gradle
Datei Ihrer App angeben, sodass Sie Distributionen für verschiedene Build-Typen und Varianten Ihrer App konfigurieren können.
Diese Anleitung beschreibt, wie Android App Bundles (AABs) mithilfe des App Distribution Gradle-Plugins an Tester verteilt werden.
App Distribution lässt sich in den internen App-Sharing-Dienst von Google Play integrieren, um die von Ihnen hochgeladenen AABs zu verarbeiten und APKs bereitzustellen, die für die Gerätekonfigurationen Ihrer Tester optimiert sind. Durch das Verteilen von AABs können Sie Folgendes tun:
Führen Sie optimierte APKs (bereitgestellt von Google Play) aus, die für die Geräte Ihrer Tester optimiert sind.
Entdecken und debuggen Sie gerätespezifische Probleme.
Testen Sie App Bundle-Funktionen wie Play Feature Delivery und Play Asset Delivery .
Reduzieren Sie die Größe der Downloads für Ihre Tester.
Erforderliche Berechtigungen
Um AABs in App Distribution hochzuladen, müssen Sie Ihre Firebase-App mit einer App in Google Play verknüpfen . Sie müssen über die erforderliche Zugriffsebene verfügen, um diese Aktionen auszuführen.
Wenn Sie nicht über den erforderlichen Firebase-Zugriff verfügen, können Sie einen Firebase-Projektinhaber bitten, Ihnen die entsprechende Rolle über die IAM-Einstellungen der Firebase-Konsole zuzuweisen. Wenn Sie Fragen zum Zugriff auf Ihr Firebase-Projekt haben, einschließlich zum Suchen oder Zuweisen eines Eigentümers, lesen Sie die häufig gestellten Fragen zu „Berechtigungen und Zugriff auf Firebase-Projekte“ .
Die folgende Tabelle gilt für das Verknüpfen einer Firebase-App mit einer App in Google Play sowie für das Hochladen von AABs.
Aktion in der Firebase-Konsole | Erforderliche IAM-Berechtigung | IAM-Rolle(n), die standardmäßig erforderliche Berechtigungen enthalten | Zusätzliche erforderliche Rolle(n) |
---|---|---|---|
Verknüpfen Sie eine Firebase-App mit einer App in Google Play | firebase.playLinks.update | Eine der folgenden Rollen: | Zugriff auf ein Google Play-Entwicklerkonto als Administrator |
Laden Sie AABs in die App-Verteilung hoch | firebaseappdistro.releases.update | Eine der folgenden Rollen: | –– |
Bevor Sie beginnen
Fügen Sie Ihrem Android-Projekt Firebase hinzu , falls Sie dies noch nicht getan haben . Am Ende dieses Workflows haben Sie eine Firebase-Android-App in Ihrem Firebase-Projekt.
Wenn Sie keine anderen Firebase-Produkte verwenden, müssen Sie nur ein Projekt erstellen und Ihre App registrieren. Wenn Sie sich entscheiden, zusätzliche Produkte zu verwenden, stellen Sie sicher, dass Sie alle Schritte unter Hinzufügen von Firebase zu Ihrem Android-Projekt ausführen .
Stellen Sie sicher, dass Ihre App die folgenden Anforderungen erfüllt, um einen Firebase-Link zu Google Play zu erstellen und AABs hochzuladen:
Die App in Google Play und die Firebase-Android-App sind beide mit demselben Paketnamen registriert.
Die App in Google Play wird auf dem App-Dashboard eingerichtet und auf einen der Google Play-Tracks verteilt (Internes Testen, Geschlossenes Testen, Offenes Testen oder Produktion).
Die Überprüfung der App in Google Play ist abgeschlossen und die App wird veröffentlicht. Ihre App wird veröffentlicht, wenn in der Spalte „App-Status“ einer der folgenden Status angezeigt wird: „Interner Test“ (kein interner Entwurfstest), „Geschlossener Test“, „Offener Test“ oder „Produktion“.
Verknüpfen Sie Ihre Firebase Android App mit Ihrem Google Play-Entwicklerkonto:
Gehen Sie in der Firebase-Konsole zu Ihren
Projekteinstellungen und wählen Sie dann die Registerkarte Integrationen aus.Klicken Sie auf der Google Play- Karte auf Link .
Wenn Sie bereits Links zu Google Play haben, klicken Sie stattdessen auf Verwalten .Befolgen Sie die Anweisungen auf dem Bildschirm, um die App Distribution-Integration zu aktivieren und auszuwählen, welche Firebase-Android-Apps mit Google Play verknüpft werden sollen.
Erfahren Sie mehr über das Verknüpfen mit Google Play .
Schritt 1. Richten Sie Ihr Android-Projekt ein
Fügen Sie in Ihrer Gradle-Datei auf Stammebene (Projektebene) (
oder<project>/build.gradle
) das App Distribution Gradle-Plugin als Buildscript-Abhängigkeit hinzu:<project>/build.gradle.kts Groovig
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:4.0.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:4.0.0") } }
Fügen Sie in Ihrer Modul-Gradle-Datei (auf App-Ebene) (normalerweise
oder<project>/<app-module>/build.gradle
) das App Distribution Gradle-Plugin hinzu:<project>/<app-module>/build.gradle.kts Groovig
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") }
Wenn Sie sich hinter einem Unternehmensproxy oder einer Firewall befinden, fügen Sie die folgende Java-Systemeigenschaft hinzu, die es App Distribution ermöglicht, Ihre Verteilungen auf Firebase hochzuladen:
-Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
Schritt 2. Authentifizieren Sie sich bei Firebase
Bevor Sie das Gradle-Plug-in verwenden können, müssen Sie sich zunächst auf eine der folgenden Arten bei Ihrem Firebase-Projekt authentifizieren. Standardmäßig sucht das Gradle-Plugin nach Anmeldeinformationen von der Firebase-CLI, wenn keine andere Authentifizierungsmethode verwendet wird.
Durch die Authentifizierung mit einem Dienstkonto können Sie das Plugin flexibel mit Ihrem Continuous Integration (CI)-System verwenden. Es gibt zwei Möglichkeiten, Anmeldeinformationen für Dienstkonten bereitzustellen:
- Übergeben Sie die Schlüsseldatei Ihres Dienstkontos an
build.gradle
. Sie finden diese Methode möglicherweise praktisch, wenn Sie Ihre Dienstkonto-Schlüsseldatei bereits in Ihrer Build-Umgebung haben. - Legen Sie die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
so fest, dass sie auf die Schlüsseldatei Ihres Dienstkontos verweist. Möglicherweise bevorzugen Sie diese Methode, wenn Sie bereits Application Default Credentials (ADC) für einen anderen Google-Dienst (z. B. Google Cloud) konfiguriert haben.
So authentifizieren Sie sich mit Dienstkonto-Anmeldeinformationen:
- Wählen Sie in der Google Cloud Console Ihr Projekt aus und erstellen Sie ein neues Dienstkonto.
- Fügen Sie die Rolle Firebase App Distribution Admin hinzu.
- Erstellen Sie einen privaten JSON-Schlüssel und verschieben Sie den Schlüssel an einen Ort, auf den Ihre Build-Umgebung zugreifen kann. Bewahren Sie diese Datei unbedingt an einem sicheren Ort auf , da sie Administratorzugriff auf die App-Verteilung in Ihrem Firebase-Projekt gewährt.
- Überspringen Sie diesen Schritt, wenn Sie Ihre App nach dem 20. September 2019 erstellt haben: Aktivieren Sie in der Google APIs-Konsole die Firebase App Distribution API. Wählen Sie bei Aufforderung das Projekt mit demselben Namen wie Ihr Firebase-Projekt aus.
Geben Sie die Anmeldeinformationen für Ihr Dienstkonto an oder suchen Sie sie:
- Um Gradle Ihren Dienstkontoschlüssel zu übergeben, legen Sie in Ihrer
build.gradle
Datei die EigenschaftserviceCredentialsFile
auf die JSON-Datei des privaten Schlüssels fest. Um Ihre Anmeldeinformationen mit ADC zu finden, legen Sie die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
auf den Pfad für die JSON-Datei mit dem privaten Schlüssel fest. Zum Beispiel:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
Weitere Informationen zur Authentifizierung mit ADC finden Sie unter Bereitstellen von Anmeldeinformationen für Ihre Anwendung.
- Um Gradle Ihren Dienstkontoschlüssel zu übergeben, legen Sie in Ihrer
Anweisungen zum Authentifizieren Ihres Projekts finden Sie unter Anmelden mit der Firebase-CLI .
Schritt 3. Konfigurieren Sie Ihre Verteilungseigenschaften
Konfigurieren Sie in Ihrer Modul-Gradle-Datei (auf App-Ebene) (normalerweise
oder
) App Distribution, indem Sie mindestens hinzufügen ein firebaseAppDistribution
Abschnitt.
Um beispielsweise den release
Build an Tester zu verteilen, befolgen Sie diese Anweisungen:
Groovig
android { // ... buildTypes { release { firebaseAppDistribution { artifactType="AAB" 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 = "AAB" releaseNotesFile = "/path/to/releasenotes.txt" testers = "ali@example.com, bri@example.com, cal@example.com" } } } // ... }
Sie können die App-Verteilung für Build-Typen und Produktvarianten konfigurieren.
Um beispielsweise debug
und release
-Builds in den Produktvarianten „Demo“ und „Vollversion“ zu verteilen, befolgen Sie diese Anweisungen:
Groovig
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" } } } // ... }
Verwenden Sie die folgenden Parameter, um die Verteilung zu konfigurieren:
App-Verteilungs-Build-Parameter | |
---|---|
appId | Die Firebase-App-ID Ihrer App. Nur erforderlich, wenn Sie das Google Services Gradle-Plug-in nicht installiert haben. Sie finden die App-ID in der Datei appId="1:1234567890:android:321abc456def7890" |
serviceCredentialsFile | Der Pfad zur JSON-Datei mit dem privaten Schlüssel Ihres Dienstkontos. Nur erforderlich, wenn Sie die Dienstkontoauthentifizierung verwenden. |
artifactType | Gibt den Dateityp Ihrer App an. Kann auf |
artifactPath | Absoluter Pfad zur APK- oder AAB-Datei, die Sie hochladen möchten. |
releaseNotes oder releaseNotesFile | Versionshinweise für diesen Build. Sie können entweder die Versionshinweise direkt angeben oder den Pfad zu einer Nur-Text-Datei. |
testers oder testersFile | Die E-Mail-Adressen der Tester, an die Sie Builds verteilen möchten. Sie können die Tester als kommagetrennte Liste von E-Mail-Adressen angeben: testers="ali@example.com, bri@example.com, cal@example.com" Oder Sie können den Pfad zu einer Datei angeben, die eine durch Kommas getrennte Liste von E-Mail-Adressen enthält: testersFile="/path/to/testers.txt" |
groups oder groupsFile | Die Testergruppen, an die Sie Builds verteilen möchten (siehe Tester verwalten ). Gruppen werden mit angegeben Sie können die Gruppen als kommagetrennte Liste von Gruppenaliasen angeben: groups="qa-team, android-testers" Oder Sie können den Pfad zu einer Datei angeben, die eine durch Kommas getrennte Liste von Gruppenaliasen enthält: groupsFile="/path/to/tester-groups.txt" |
stacktrace | Druckt den Stacktrace für Benutzerausnahmen aus. Dies ist beim Debuggen von Problemen hilfreich. |
Schritt 4. Verteilen Sie Ihre App an Tester
Um schließlich Ihre Test-App zu verpacken und Tester einzuladen, erstellen Sie die Ziele
BUILD-VARIANT
undappDistributionUpload BUILD-VARIANT
mit dem Gradle-Wrapper Ihres Projekts, wobei BUILD-VARIANT die optionale Produktvariante und der Buildtyp ist, den Sie im vorherigen Schritt konfiguriert haben. Weitere Informationen zu Produktvarianten finden Sie unter Build-Varianten konfigurieren .Um Ihre App beispielsweise mit der
release
Build-Variante zu verteilen, führen Sie den folgenden Befehl aus:./gradlew bundleRelease appDistributionUploadRelease
Wenn Sie sich mit Ihrem Google-Konto authentifiziert und keine Anmeldeinformationen in Ihrer Gradle-Build-Datei angegeben haben, fügen Sie die Variable
FIREBASE_TOKEN
ein:export FIREBASE_TOKEN=1/a1b2c3d4e5f67890 ./gradlew --stop // Only needed for environment variable changes ./gradlew bundleRelease appDistributionUploadRelease
Sie können die in Ihrer
build.gradle
Datei festgelegten Werte auch überschreiben, indem Sie Befehlszeilenargumente in Form von--<property-name>=<property-value>
übergeben. Zum Beispiel:So laden Sie einen Debug-Build in App Distribution hoch:
./gradlew bundleDebug appDistributionUploadDebug --artifactType="AAB"
So laden Sie weitere Tester ein oder entfernen vorhandene Tester aus Ihrem Firebase-Projekt:
./gradlew appDistributionAddTesters --projectNumber=<project_number> --emails="anothertester@email.com, moretesters@email.com"
./gradlew appDistributionRemoveTesters --projectNumber=<project_number> --emails="anothertester@email.com, moretesters@email.com"
Sobald ein Tester zu Ihrem Firebase-Projekt hinzugefügt wurde, können Sie ihn einzelnen Releases hinzufügen. Tester, die entfernt werden, haben keinen Zugriff mehr auf Releases in Ihrem Projekt, behalten aber möglicherweise noch für ein gewisses Zeitfenster Zugriff auf Ihre Releases.
Sie können Tester auch mit
--file="/path/to/testers.txt"
anstelle von--emails
angeben.Die Tasks
appDistributionAddTesters
undappDistributionRemoveTesters
akzeptieren auch die folgenden Argumente:projectNumber
: Ihre Firebase-Projektnummer.serviceCredentialsFile
: Der Pfad zu Ihrer Datei mit den Anmeldeinformationen für den Google-Dienst. Dies ist dasselbe Argument, das von der Upload-Aktion verwendet wird.
Das Gradle-Plugin gibt nach dem Release-Upload folgende Links aus. Diese Links helfen Ihnen bei der Verwaltung von Binärdateien und stellen sicher, dass Tester und andere Entwickler die richtige Version haben:
-
firebase_console_uri
– Ein Link zur Firebase-Konsole, der eine einzelne Version anzeigt. Sie können diesen Link mit anderen Entwicklern in Ihrer Organisation teilen. -
testing_uri
– Ein Link zur Version im Tester-Erlebnis (native Android-App), mit dem Tester Versionshinweise anzeigen und die App auf ihrem Gerät installieren können. Der Tester benötigt Zugriff auf die Freigabe, um den Link verwenden zu können. -
binary_download_uri
– Ein signierter Link, der die App-Binärdatei (APK- oder AAB-Datei) direkt herunterlädt und installiert. Der Link läuft nach einer Stunde ab.
Nachdem Sie Ihren Build verteilt haben, ist er 150 Tage (fünf Monate) lang im App-Verteilungs-Dashboard der Firebase-Konsole verfügbar. Wenn der Build in 30 Tagen abläuft, wird sowohl in der Konsole als auch in der Liste der Builds Ihres Testers auf seinem Testgerät ein Ablaufhinweis angezeigt.
Tester, die nicht zum Testen der App eingeladen wurden, erhalten E-Mail-Einladungen, um loszulegen, und bestehende Tester erhalten E-Mail-Benachrichtigungen, dass ein neuer Build zum Testen bereit ist (Lesen Sie die Einrichtungsanleitung für Tester , um Anweisungen zum Installieren der Test-App zu erhalten). Sie können den Status jedes Testers – ob er die Einladung angenommen und die App heruntergeladen hat – in der Firebase-Konsole überwachen.
Tester haben 30 Tage Zeit, um eine Einladung zum Testen der App anzunehmen, bevor sie abläuft. Wenn eine Einladung in 5 Tagen abläuft, wird in der Firebase-Konsole neben dem Tester für eine Version ein Ablaufhinweis angezeigt. Eine Einladung kann erneuert werden, indem Sie sie über das Dropdown-Menü in der Tester-Zeile erneut senden.
Nächste Schritte
Implementieren Sie In-App-Feedback , um Testern das Senden von Feedback zu Ihrer App (einschließlich Screenshots) zu erleichtern.
Erfahren Sie, wie Sie Ihren Testern In-App-Warnungen anzeigen, wenn neue Builds Ihrer App zur Installation verfügbar sind.
Besuchen Sie das Android-App-Bundle-Codelab, um Schritt für Schritt zu erfahren, wie App-Bundle-Releases verteilt werden.
Lernen Sie Best Practices für die Verteilung von Android-Apps an QA-Tester mit CI/CD kennen.