Sie können App Distribution mit dem App Distribution-Gradle-Plug-in in Ihren Android-Build-Prozess einbinden. Mit dem Plug-in können Sie Ihre Tester und Release-Notes in der Gradle-Datei Ihrer App angeben und so Bereitstellungen für verschiedene Buildtypen und Varianten Ihrer App konfigurieren.
In dieser Anleitung wird beschrieben, wie Sie APKs mit dem App Distribution Gradle-Plug-in an Tester verteilen.
Hinweis
Fügen Sie Ihrem Android-Projekt Firebase hinzu, falls noch nicht geschehen.
Wenn Sie keine anderen Firebase-Produkte verwenden, müssen Sie nur ein Projekt erstellen und Ihre App registrieren. Wenn Sie jedoch in Zukunft zusätzliche Produkte verwenden möchten, müssen Sie alle Schritte auf der oben verlinkten Seite ausführen.
Schritt 1: Android-Projekt einrichten
Fügen Sie in der Gradle-Datei auf Stammebene (Projektebene) (
<project>/build.gradle.kts
oder<project>/build.gradle
) das App Distribution-Gradle-Plug-in als Abhängigkeit hinzu: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.1.1" apply false }
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.1.1' apply false }
Fügen Sie in der Gradle-Datei des Moduls (auf App-Ebene) (in der Regel
<project>/<app-module>/build.gradle.kts
oder<project>/<app-module>/build.gradle
) das App Distribution-Gradle-Plug-in hinzu: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' }
Wenn Sie sich hinter einem Unternehmensproxy oder einer Firewall befinden, fügen Sie die folgende Java-Systemeigenschaft hinzu, damit App Distribution Ihre Distributionen auf Firebase hochladen kann:
-Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
Schritt 2: Mit Firebase authentifizieren
Bevor Sie das Gradle-Plug-in verwenden können, müssen Sie sich auf eine der folgenden Arten mit Ihrem Firebase-Projekt authentifizieren. Standardmäßig sucht das Gradle-Plug-in nach Anmeldedaten aus der Firebase-Befehlszeile, wenn keine andere Authentifizierungsmethode verwendet wird.
Anmeldedaten für Firebase-Dienstkonten verwenden
Wenn Sie sich mit einem Dienstkonto authentifizieren, können Sie das Plug-in flexibel mit Ihrem CI-System (Continuous Integration) verwenden. Es gibt zwei Möglichkeiten, Anmeldedaten für das Dienstkonto anzugeben:
- Übergeben Sie die Dienstkontoschlüsseldatei an
build.gradle
. Diese Methode ist praktisch, wenn Sie die Schlüsseldatei des Dienstkontos bereits in Ihrer Build-Umgebung haben. - Legen Sie die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
so fest, dass sie auf die Schlüsseldatei des Dienstkontos verweist. Diese Methode ist möglicherweise die beste Wahl, wenn Sie bereits Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) für einen anderen Google-Dienst konfiguriert haben (z.B. Google Cloud).
So authentifizieren Sie sich mit den Anmeldedaten eines Dienstkontos:
- Wählen Sie in der Google Cloud-Konsole Ihr Projekt aus und erstellen Sie ein neues Dienstkonto.
- Fügen Sie die Rolle Firebase App Distribution Administrator hinzu.
- Erstellen Sie einen privaten JSON-Schlüssel und verschieben Sie ihn an einen Speicherort, auf den Ihre Build-Umgebung zugreifen kann. Bewahren Sie diese Datei an einem sicheren Ort auf, da sie Administratorzugriff auf App Distribution in Ihrem Firebase-Projekt gewährt.
- Wenn Sie Ihre App nach dem 20. September 2019 erstellt haben, überspringen Sie diesen Schritt: Aktivieren Sie in der Google APIs Console die Firebase App Distribution API. Wählen Sie auf Aufforderung das Projekt mit demselben Namen wie Ihr Firebase-Projekt aus.
Geben Sie die Anmeldedaten für das Dienstkonto an oder suchen Sie sie:
- Wenn Sie Gradle Ihren Dienstkontoschlüssel übergeben möchten, legen Sie in Ihrer
build.gradle
-Datei die EigenschaftserviceCredentialsFile
auf die JSON-Datei des privaten Schlüssels fest. Damit ADC Ihre Anmeldedaten finden kann, legen Sie die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
auf den Pfad zur JSON-Datei des privaten Schlüssels fest. Beispiel:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
Weitere Informationen zur Authentifizierung mit ADC finden Sie unter Anmeldedaten für Ihre Anwendung angeben.
- Wenn Sie Gradle Ihren Dienstkontoschlüssel übergeben möchten, legen Sie in Ihrer
Über die Firebase CLI anmelden
Eine Anleitung zum Authentifizieren Ihres Projekts finden Sie unter Über die Firebase-Befehlszeile anmelden.
Schritt 3: Vertriebseigenschaften konfigurieren
Konfigurieren Sie App Distribution in der Gradle-Datei Ihres Moduls (auf App-Ebene) (in der Regel <project>/<app-module>/build.gradle.kts
oder <project>/<app-module>/build.gradle
), indem Sie mindestens einen Abschnitt firebaseAppDistribution
hinzufügen.
So verteilen Sie beispielsweise den Build release
an Tester:
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" } } } // ... }
android { // ... buildTypes { release { firebaseAppDistribution { artifactType="APK" releaseNotesFile="/path/to/releasenotes.txt" testers="ali@example.com, bri@example.com, cal@example.com" } } } // ... }
Sie können App Distribution für Buildtypen und Produktvarianten konfigurieren.
Wenn Sie beispielsweise debug
- und release
-Builds in den Produktvarianten „demo“ und „full“ bereitstellen möchten, gehen Sie so vor:
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" } } } // ... }
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" } } } // ... }
Verwenden Sie die folgenden Parameter, um die Verteilung zu konfigurieren:
App Distribution Build-Parameter | |
---|---|
appId
|
Die Firebase App-ID Ihrer App. Nur erforderlich, wenn das Gradle-Plug-in für Google-Dienste nicht installiert ist. Sie finden die App-ID in der appId="1:1234567890:android:321abc456def7890" |
serviceCredentialsFile
|
Der Pfad zur JSON-Datei mit dem privaten Schlüssel Ihres Dienstkontos. Nur erforderlich, wenn Sie die Dienstkonto-Authentifizierung 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 Release-Notes direkt angeben oder den Pfad zu einer reinen Textdatei. |
testers oder testersFile |
Die E-Mail-Adressen der Tester, an die Sie Builds verteilen möchten. Sie können die Tester als durch Kommas getrennte Liste von E-Mail-Adressen angeben: testers="ali@example.com, bri@example.com, cal@example.com" Alternativ können Sie 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 Sie können die Gruppen als durch Kommas getrennte Liste von Gruppenaliasen angeben: groups="qa-team, android-testers" Alternativ können Sie den Pfad zu einer Datei angeben, die eine durch Kommas getrennte Liste von Gruppenaliasen enthält: groupsFile="/path/to/tester-groups.txt" |
testDevices oder testDevicesFile |
Die folgenden Verteilungstypen sind Teil der Betafunktion „Automatischer Tester“. Die Testgeräte, auf die Sie Builds verteilen möchten (siehe Automatisierte Tests). Sie können die Testgeräte als durch Semikolons getrennte Liste von Gerätespezifikationen angeben: testDevices="model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait" Alternativ können Sie den Pfad zu einer Datei angeben, die eine durch Semikolons getrennte Liste von Gerätespezifikationen enthält: testDevicesFile="/path/to/testDevices.txt" |
testUsername |
Der Benutzername für die automatische Anmeldung bei automatisierten Tests. |
testPassword oder testPasswordFile |
Das Passwort für die automatische Anmeldung bei automatisierten Tests. Sie können auch den Pfad zu einer Nur-Text-Datei mit einem Passwort angeben: testPasswordFile="/path/to/testPassword.txt" |
testUsernameResource |
Ressourcenname für das Feld „Nutzername“ für die automatische Anmeldung bei automatisierten Tests. |
testPasswordResource |
Ressourcenname für das Passwortfeld für die automatische Anmeldung, das bei automatisierten Tests verwendet werden soll. |
testNonBlocking |
Automatisierte Tests asynchron ausführen. Die Ergebnisse des automatischen Tests finden Sie in der Firebase Console. |
stacktrace
|
Der Stacktrace für Nutzerausnahmen wird ausgegeben. Das ist hilfreich bei der Fehlerbehebung. |
Schritt 4: App an Tester verteilen
Um Ihre Test-App zu verpacken und Tester einzuladen, erstellen Sie abschließend die Ziele
BUILD-VARIANT
undappDistributionUploadBUILD-VARIANT
mit dem Gradle-Wrapper Ihres Projekts. Dabei ist BUILD-VARIANT die optionale Produktvariante und der Build-Typ, die bzw. den Sie im vorherigen Schritt konfiguriert haben. Weitere Informationen zu Produktvarianten finden Sie unter Build-Varianten konfigurieren.Wenn Sie Ihre App beispielsweise mit der Buildvariante
release
verteilen möchten, führen Sie den folgenden Befehl aus:./gradlew assembleRelease appDistributionUploadRelease
Wenn Sie sich mit Ihrem Google-Konto authentifiziert und keine Anmeldedaten in Ihrer Gradle-Builddatei angegeben haben, fügen Sie die Variable
FIREBASE_TOKEN
ein:export FIREBASE_TOKEN=1/a1b2c3d4e5f67890 ./gradlew --stop // Only needed for environment variable changes ./gradlew assembleRelease appDistributionUploadRelease
Sie können die in der Datei
build.gradle
festgelegten Werte auch überschreiben, indem Sie Befehlszeilenargumente in Form von--<property-name>=<property-value>
übergeben. Beispiel:So laden Sie einen Debug-Build auf App Distribution hoch:
./gradlew bundleDebug appDistributionUploadDebug --artifactType="APK"
So laden Sie zusätzliche 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"
Nachdem ein Tester Ihrem Firebase-Projekt hinzugefügt wurde, können Sie ihn einzelnen Releases hinzufügen. Entfernte Tester haben keinen Zugriff mehr auf Releases in Ihrem Projekt, behalten aber möglicherweise für einen bestimmten Zeitraum Zugriff auf Ihre Releases.
Sie können Tester auch mit
--file="/path/to/testers.txt"
anstelle von--emails
angeben.Die Aufgaben
appDistributionAddTesters
undappDistributionRemoveTesters
akzeptieren außerdem die folgenden Argumente:projectNumber
: Ihre Firebase-Projektnummer.serviceCredentialsFile
: Der Pfad zur Anmeldedatendatei für Google-Dienste. Dies ist dasselbe Argument, das auch für die Uploadaktion verwendet wird.
Das Gradle-Plug-in gibt nach dem Upload des Release die folgenden Links aus. Über diese Links können Sie Binärdateien verwalten und dafür sorgen, dass Tester und andere Entwickler die richtige Version haben:
firebase_console_uri
: Ein Link zur Firebase-Konsole mit einer einzelnen Version. Sie können diesen Link mit anderen Entwicklern in Ihrer Organisation teilen.testing_uri
– Ein Link zum Release in der Testeroberfläche (native Android-App), über den Tester Release-Notes aufrufen und die App auf ihrem Gerät installieren können. Der Tester benötigt Zugriff auf die Version, um den Link verwenden zu können.binary_download_uri
: Ein signierter Link, über den die App-Binärdatei (APK- oder AAB-Datei) direkt heruntergeladen und installiert wird. Der Link läuft nach einer Stunde ab.
Sobald Sie Ihren Build veröffentlicht haben, ist er 150 Tage (fünf Monate) lang im App Distribution-Dashboard der Firebase-Konsole verfügbar. 30 Tage vor Ablauf des Builds wird sowohl in der Konsole als auch in der Liste der Builds Ihres Testers auf seinem Testgerät eine entsprechende Benachrichtigung angezeigt.
Tester, die nicht zum Testen der App eingeladen wurden, erhalten eine E-Mail-Einladung zum Einstieg. Bestehende Tester werden per E-Mail benachrichtigt, dass ein neuer Build zum Testen bereit ist. Eine Anleitung zum Installieren der Test-App finden Sie im Leitfaden zur Einrichtung von Testern. In der Firebase-Konsole können Sie den Status der einzelnen Tester prüfen, also ob sie die Einladung angenommen und die App heruntergeladen haben.
Tester haben 30 Tage Zeit, eine Einladung zum Testen der App anzunehmen, bevor sie abläuft. Wenn eine Einladung in 5 Tagen abläuft, wird in der Firebase-Console neben dem Tester in einer Version eine Benachrichtigung zum Ablauf angezeigt. Eine Einladung kann verlängert werden, indem Sie sie über das Drop-down-Menü in der Zeile des Testers noch einmal senden.
Nächste Schritte
Implementieren Sie In-App-Feedback, damit Tester ganz einfach Feedback zu Ihrer App senden können (einschließlich Screenshots).
Im Codelab zu Android App Bundles erfahren Sie Schritt für Schritt, wie Sie App-Bundle-Releases verteilen.
Best Practices für die Bereitstellung von Android-Apps für QA-Tester mit CI/CD