Android-Apps mit Gradle für Tester bereitstellen


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 Android App-Bundles (AABs) mit dem App Distribution Gradle-Plug-in an Tester verteilen.

App Distribution ist in den internen App-Freigabedienst von Google Play eingebunden, um die von Ihnen hochgeladenen AABs zu verarbeiten und APKs bereitzustellen, die für die Gerätekonfigurationen Ihrer Tester optimiert sind. Wenn Sie AABs bereitstellen, haben Sie folgende Möglichkeiten:

  • Führen Sie von Google Play bereitgestellte, optimierte APKs aus, die für die Geräte Ihrer Tester optimiert sind.

  • Gerätespezifische Probleme erkennen und beheben

  • App-Bundle-Funktionen wie Play Feature Delivery und Play Asset Delivery testen

  • Verringern Sie die Größe der Downloads für Ihre Tester.

Erforderliche Berechtigungen

Zum Hochladen von AABs in App Distribution müssen Sie Ihre Firebase-Anwendung mit einer Anwendung in Google Play verknüpfen. Sie benötigen die erforderliche Zugriffsebene, um diese Aktionen ausführen zu können.

Wenn Sie nicht die erforderlichen Firebase-Zugriffsrechte haben, 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 Finden oder Zuweisen eines Inhabers, lesen Sie die häufig gestellten Fragen zu Berechtigungen und Zugriff auf Firebase-Projekte.

Die folgende Tabelle gilt für die Verknüpfung einer Firebase-App mit einer App in Google Play sowie für das Hochladen von Android App Bundles.

Aktion in der Firebase Console Erforderliche IAM-Berechtigung IAM-Rollen, die standardmäßig die erforderlichen Berechtigungen enthalten Zusätzliche erforderliche Rolle(n)
Firebase-App mit einer App in Google Play verknüpfen firebase.playLinks.update Eine der folgenden Rollen: Zugriff auf ein Google Play-Entwicklerkonto als Administrator
AABs in App Distribution hochladen firebaseappdistro.releases.update Eine der folgenden Rollen:

Hinweis

  1. Fügen Sie Ihrem Android-Projekt Firebase hinzu, falls noch nicht geschehen. 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 zusätzliche Produkte verwenden möchten, müssen Sie alle Schritte unter Firebase Ihrem Android-Projekt hinzufügen ausführen.

  2. Ihre App muss die folgenden Anforderungen erfüllen, um eine Firebase-Verknüpfung zu Google Play zu erstellen und Android App Bundles hochzuladen:

    • Die App in Google Play und die Firebase-Android-App sind unter demselben Paketnamen registriert.

    • Die App in Google Play wird im App-Dashboard eingerichtet und über einen der Google Play-Tracks veröffentlicht (interner, geschlossener oder offener Test bzw. 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“ (nicht „Entwurf“), „Geschlossener Test“, „Offener Test“ oder „Produktion“.

  3. So verknüpfen Sie Ihre Firebase-Android-App mit Ihrem Google Play-Entwicklerkonto:

    1. Rufen Sie in der Firebase-Konsole Ihre Projekteinstellungen auf und wählen Sie dann den Tab Integrationen aus.

    2. Klicken Sie auf der Karte Google Play auf Verknüpfen.
      Wenn Sie bereits Verknüpfungen mit Google Play haben, klicken Sie stattdessen auf Verwalten.

    3. Folgen Sie der Anleitung auf dem Bildschirm, um die App Distribution-Integration zu aktivieren und auszuwählen, welche Firebase-Android-Apps mit Google Play verknüpft werden sollen.

    Weitere Informationen zum Verknüpfen mit Google Play

Schritt 1: Android-Projekt einrichten

  1. 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:

    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. 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 Gradle-Plug-in App Distribution hinzu:

    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. 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 mit einer der folgenden Methoden bei Ihrem Firebase-Projekt authentifizieren. Standardmäßig sucht das Gradle-Plug-in nach Anmeldedaten aus der Firebase-Befehlszeile, wenn keine andere Authentifizierungsmethode verwendet wird.

Schritt 3: Vertriebseigenschaften konfigurieren

Konfigurieren 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) App Distribution. Fügen Sie dazu mindestens einen firebaseAppDistribution-Abschnitt hinzu.

Wenn Sie beispielsweise den release-Build an Tester verteilen möchten, gehen Sie so vor:

Kotlin

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

android {

  // ...

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

  // ...
}

Groovy

android {

  // ...

  buildTypes {
      release {
          firebaseAppDistribution {
              artifactType="AAB"
              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:

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

  // ...
}

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 google-services.json-Datei oder in der Firebase-Console auf der Seite Allgemeine Einstellungen. Der Wert in der Datei build.gradle überschreibt die Wertausgabe des Plug-ins google-services.

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 Anwendung an. Kann auf "AAB" oder "APK" festgelegt werden.

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 eine 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 Gruppenaliasen angegeben. Sie finden diese in der Firebase Console auf dem Tab Tester.App Distribution

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 Nutzername für die automatische Anmeldung bei automatischen 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, der bei automatisierten Tests verwendet wird

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

  1. Um Ihre Test-App zu verpacken und Tester einzuladen, erstellen Sie abschließend die Ziele BUILD-VARIANT und appDistributionUploadBUILD-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.

    Führen Sie beispielsweise den folgenden Befehl aus, um Ihre App mit der Build-Variante release zu verteilen:

    ./gradlew bundleRelease 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 bundleRelease appDistributionUploadRelease
    
  2. 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="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"

      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.

    Du kannst Tester auch mit --file="/path/to/testers.txt" anstelle von --emails angeben.

    Die Aufgaben appDistributionAddTesters und appDistributionRemoveTesters akzeptieren außerdem die folgenden Argumente:

    • projectNumber: Ihre Firebase-Projektnummer.

    • serviceCredentialsFile: Der Pfad zur Anmeldedatendatei für Google-Dienste. Dies ist das gleiche Argument, das von der Upload-Aktion 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 den Release, 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 auf dem Testgerät des Testers eine entsprechende Benachrichtigung angezeigt.

Tester, die nicht zum Testen der App eingeladen wurden, erhalten E-Mail-Einladungen zum Starten und bestehende Tester erhalten E-Mail-Benachrichtigungen, dass ein neuer Build getestet werden kann. Eine Anleitung zum Installieren der Test-App finden Sie im Leitfaden zum Einrichten der Test-App. In der Firebase-Konsole kannst du den Status der einzelnen Tester verfolgen und nachsehen, ob sie die Einladung angenommen haben und ob sie 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-Konsole neben dem Tester in einer Version eine entsprechende Benachrichtigung 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