Android-Apps mit Gradle für Tester bereitstellen


Sie können App Distribution mithilfe des App Distribution-Gradle-Plug-ins in Ihren Android-Build-Prozess einbinden. Mit dem Plug-in können Sie Ihre Tester und Versionshinweise in der Gradle-Datei Ihrer App angeben und so Verteilungen für verschiedene Build-Typen und Varianten Ihrer App konfigurieren.

In dieser Anleitung wird beschrieben, wie Sie APKs mithilfe des App Distribution-Gradle-Plug-ins an Tester verteilen.

Hinweis

  1. Falls noch nicht geschehen, fügen Sie Ihrem Android-Projekt Firebase hinzu.

    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.

  2. Öffnen Sie in der Firebase-Konsole die Seite App Distribution. Wählen Sie Ihr Firebase-Projekt aus, wenn Sie dazu aufgefordert werden, wählen Sie Ihre App über die App-Auswahl aus und klicken Sie auf Jetzt loslegen.

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 Gradle-Plug-in App Distribution 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.5.0" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.3.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.5.0' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.3.0' apply false
    }
  2. Fügen Sie in der Gradle-Datei Ihres 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 in Firebase hochladen kann:

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

Schritt 2: Bei Firebase authentifizieren

Bevor Sie das Gradle-Plug-in verwenden können, müssen Sie sich zuerst auf eine der folgenden Arten bei Ihrem Firebase-Projekt authentifizieren. Standardmäßig sucht das Gradle-Plug-in nach Anmeldedaten aus der Firebase CLI, wenn keine andere Authentifizierungsmethode verwendet wird.

Schritt 3: Vertriebseinstellungen 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 firebaseAppDistribution-Abschnitt hinzufügen.

So verteilen Sie beispielsweise den Build release an Tester::

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

  // ...
}

Sie können App Distribution für Build-Typen und Produktvarianten konfigurieren.

Wenn Sie beispielsweise die Builds debug und release in den Produktvarianten „demo“ und „full“ verteilen möchten, folgen Sie dieser Anleitung:

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 Sie das Gradle-Plug-in für Google-Dienste nicht installiert haben. Sie finden die App-ID in der Datei google-services.json oder in der Firebase Console auf der Seite Allgemeine Einstellungen. Der Wert in Ihrer Datei build.gradle überschreibt den Wert, der vom google-services-Plugin ausgegeben wird.

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 "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 die Versionshinweise entweder 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 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 mit einer durch Kommas getrennten Liste von E-Mail-Adressen angeben:

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, die Sie in der Firebase-App Distribution-Konsole auf dem Tab Tester finden.

Sie können die Gruppen als durch Kommas getrennte Liste von Gruppenalias angeben:

groups="qa-team, android-testers"

Alternativ können Sie den Pfad zu einer Datei mit einer durch Kommas getrennten Liste von Gruppenaliasen angeben:

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

Die Testgeräte, auf denen Sie Tests mit dem KI-Agent zum Testen von Anwendungen ausführen möchten.

Sie können die Testgeräte als durch Semikolons getrennte Liste von Gerätespezifikationen angeben:

testDevices="model=shiba,version=34,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, der bei Tests durch den KI-Agent zum Testen von Anwendungen verwendet werden soll.

testPassword oder testPasswordFile

Das Passwort für die automatische Anmeldung, das bei Tests des App Testing-Agents verwendet werden soll.

Alternativ können Sie 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, das bei Tests des KI-Agenten zum Testen von Anwendungen verwendet werden soll.

testPasswordResource

Ressourcenname für das Passwortfeld für die automatische Anmeldung, der bei Tests durch den KI-Agent zum Testen von Anwendungen verwendet werden soll.

testNonBlocking

Wenn dieser Parameter beim Ausführen von Tests mit dem KI-Agent zum Testen von Anwendungen festgelegt ist, werden die Tests mit dem Befehl gestartet und dann wird sofort zurückgegeben, anstatt auf den Abschluss der Tests zu warten. Die Testergebnisse finden Sie in der Firebase Console. Wenn dieses Flag nicht festgelegt ist, wird der Befehl blockiert, bis die Tests abgeschlossen sind. Wenn einer der Tests fehlschlägt, wird der Befehl mit einem Fehlercode beendet.

resultsBucket

Ein benutzerdefinierter Google Cloud Storage-Bucket (GCS), in dem Testergebnisse gespeichert werden. Wenn Sie dieses Feld leer lassen, wird der Standard-Bucket verwendet. Der Bucket muss einem Projekt gehören, für das die Abrechnung aktiviert ist. Wenn Sie einen Bucket angeben, fallen Abrechnungsgebühren für den verwendeten Speicherplatz an.

stacktrace

Gibt den Stacktrace für Nutzerausnahmen aus. Das ist hilfreich bei der Fehlerbehebung.

Schritt 4: App für Tester bereitstellen

  1. Um Ihre Test-App zu packen und Tester einzuladen, müssen Sie schließlich die Ziele BUILD-VARIANT und appDistributionUploadBUILD-VARIANT mit dem Gradle-Wrapper Ihres Projekts erstellen. Dabei ist BUILD-VARIANT die optionale Produktvariante und der Build-Typ, die Sie im vorherigen Schritt konfiguriert haben. Weitere Informationen zu Produktvarianten finden Sie unter Build-Varianten konfigurieren.

    Wenn Sie Ihre App beispielsweise mit der Build-Variante release verteilen möchten, führen Sie den folgenden Befehl aus:

    ./gradlew assembleRelease appDistributionUploadRelease
    

    Wenn Sie sich mit Ihrem Google-Konto authentifiziert und in Ihrer Gradle-Build-Datei keine Anmeldedaten 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
    
  2. Sie können die in der Datei build.gradle festgelegten Werte auch überschreiben, indem Sie Befehlszeilenargumente in der Form --<property-name>=<property-value> übergeben. Beispiel:

    • So laden Sie einen Debug-Build auf App Distribution hoch:

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="APK"
    • 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 Sie einen Tester Ihrem Firebase-Projekt hinzugefügt haben, können Sie ihn einzelnen Releases hinzufügen. Entfernte Tester haben keinen Zugriff mehr auf Releases in Ihrem Projekt, behalten aber möglicherweise noch eine Weile Zugriff auf Ihre Releases.

    Sie können Tester auch mit --file="/path/to/testers.txt" anstelle von --emails angeben.

    Die Aufgaben appDistributionAddTesters und appDistributionRemoveTesters akzeptieren auch die folgenden Argumente:

    • projectNumber: Ihre Firebase-Projektnummer.

    • serviceCredentialsFile: Der Pfad zu Ihrer Datei mit Anmeldedaten für Google-Dienste. Das ist dasselbe Argument, das von der Upload-Aktion verwendet wird.

Das Gradle-Plug-in gibt nach dem Hochladen der Version 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 erhalten:

  • firebase_console_uri: Ein Link zur Firebase-Konsole, in der eine einzelne Version angezeigt wird. Sie können diesen Link mit anderen Entwicklern in Ihrer Organisation teilen.
  • testing_uri: Ein Link zum Release in der Testerumgebung (integrierte Android-App), über den Tester Release-Hinweise 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 das App-Binärprogramm (APK- oder AAB-Datei) direkt heruntergeladen und installiert wird. Der Link läuft nach einer Stunde ab.

Sobald Sie Ihren Build verteilt haben, ist er 150 Tage (fünf Monate) lang im App Distribution-Dashboard der Firebase-Konsole verfügbar. 30 Tage vor dem Ablaufdatum des Builds wird sowohl in der Console als auch in der Liste der Builds auf dem Testgerät des Testers eine Ablaufbenachrichtigung angezeigt.

Tester, die noch nicht zum Testen der App eingeladen wurden, erhalten E‑Mail-Einladungen. Bestehende Tester erhalten E‑Mail-Benachrichtigungen, 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 im Blick behalten. Sie sehen, ob sie die Einladung angenommen und die App heruntergeladen haben.

Tester haben 30 Tage Zeit, eine Einladung zum Testen der App anzunehmen. Danach läuft sie ab. Wenn eine Einladung in fünf Tagen abläuft, wird in der Firebase Console neben dem Tester einer Version eine Ablaufbenachrichtigung angezeigt. Eine Einladung kann erneuert werden, indem Sie sie über das Drop-down-Menü in der Testerzeile noch einmal senden.

Nächste Schritte