Verteilen Sie Android-Apps mit Gradle an Tester

Sie können App Distribution mit dem App Distribution Gradle-Plugin in Ihren Android-Build-Prozess integrieren. Mit dem Plugin 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-Plugins an Tester verteilen.

Bevor Sie beginnen

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

Wenn Sie keine anderen Firebase-Produkte verwenden, müssen Sie nur ein Projekt erstellen und Ihre App registrieren. Wenn Sie sich jedoch dazu entschließen, in Zukunft weitere Produkte zu verwenden, stellen Sie sicher, dass Sie alle Schritte auf der oben verlinkten Seite ausführen.

Schritt 1. Richten Sie Ihr Android-Projekt ein

  1. Fügen Sie in Ihrer Gradle-Datei auf Stammebene (Projektebene) ( <project>/build.gradle.kts oder <project>/build.gradle ) das App Distribution Gradle-Plugin 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.1" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "4.2.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.1' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '4.2.0' apply false
    }
    
  2. Fügen Sie in Ihrer Modul-Gradle-Datei (auf App-Ebene) (normalerweise <project>/<app-module>/build.gradle.kts oder <project>/<app-module>/build.gradle ) das App Distribution Gradle-Plugin 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 Unternehmens-Proxy oder einer Firewall befinden, fügen Sie die folgende Java-Systemeigenschaft hinzu, die es App Distribution ermöglicht, Ihre Distributionen in 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-Plugin 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.

Schritt 3: Konfigurieren Sie Ihre Verteilungseigenschaften

Konfigurieren Sie in der Gradle-Datei Ihres Moduls (App-Ebene) (normalerweise <project>/<app-module>/build.gradle.kts oder <project>/<app-module>/build.gradle ) die App-Verteilung, indem Sie mindestens hinzufügen ein firebaseAppDistribution Abschnitt.

Um beispielsweise den release Build an Tester zu verteilen, befolgen Sie diese Anweisungen:

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

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:

Build-Parameter für die App-Verteilung
appId

Die Firebase-App-ID Ihrer App. Nur erforderlich, wenn Sie das Google Services Gradle-Plugin nicht installiert haben. Sie finden die App-ID in der Datei google-services.json oder in der Firebase-Konsole auf der Seite „Allgemeine Einstellungen“ . Der Wert in Ihrer build.gradle Datei überschreibt die Wertausgabe des google-services -Plugins.

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 "AAB" oder "APK" eingestellt 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 Versionshinweise direkt oder den Pfad zu einer Nur-Text-Datei angeben.

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"

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 Gruppenaliase , die Sie auf der Registerkarte „Tester“ in der Firebase App Distribution-Konsole finden.

Sie können die Gruppen als durch Kommas getrennte Liste von Gruppenaliasnamen 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"
testDevices oder testDevicesFile

Die folgenden Verteilungstypen sind Teil der Betafunktion des automatisierten Testers .

Die Testgeräte, an 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"

Oder Sie können 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, der bei automatisierten Tests verwendet wird.

testPassword oder testPasswordFile

Das Passwort für die automatische Anmeldung, das bei automatisierten Tests verwendet wird.

Oder Sie können den Pfad zu einer Nur-Text-Datei angeben, die ein Passwort enthält:

testPasswordFile="/path/to/testPassword.txt"
testUsernameResource

Ressourcenname für das Benutzernamenfeld für die automatische Anmeldung, das bei automatisierten Tests verwendet werden soll.

testPasswordResource

Ressourcenname für das Passwortfeld für die automatische Anmeldung, das bei automatisierten Tests verwendet werden soll.

testNonBlocking

Führen Sie automatisierte Tests asynchron aus. Besuchen Sie die Firebase-Konsole für die automatischen Testergebnisse.

stacktrace

Druckt den Stacktrace für Benutzerausnahmen aus. Dies ist hilfreich beim Debuggen von Problemen.

Schritt 4. Verteilen Sie Ihre App an Tester

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

    Um Ihre App beispielsweise mithilfe der release Build-Variante zu verteilen, führen Sie den folgenden Befehl aus:

    ./gradlew assembleRelease appDistributionUploadRelease
    

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

    • So laden Sie einen Debug-Build in 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"
      

      Sobald ein Tester zu Ihrem Firebase-Projekt hinzugefügt wurde, können Sie ihn zu einzelnen Releases hinzufügen. Entfernte Tester haben keinen Zugriff mehr auf Releases in Ihrem Projekt, behalten aber möglicherweise noch 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 und appDistributionRemoveTesters akzeptieren außerdem die folgenden Argumente:

    • projectNumber : Ihre Firebase-Projektnummer.

    • serviceCredentialsFile : Der Pfad zu Ihrer Google-Dienstanmeldeinformationsdatei. Dies ist das gleiche Argument, das von der Upload-Aktion verwendet wird.

Das Gradle-Plugin gibt nach dem Release-Upload die folgenden Links aus. Diese Links helfen Ihnen bei der Verwaltung von Binärdateien und stellen sicher, dass Tester und andere Entwickler über die richtige Version verfügen:

  • 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 Veröffentlichung im Tester-Erlebnis (native Android-App), mit dem Tester Versionshinweise anzeigen und die App auf ihrem Gerät installieren können. Um den Link nutzen zu können, benötigt der Tester Zugriff auf die Freigabe.
  • 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.

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

Tester, die nicht zum Testen der App eingeladen wurden, erhalten E-Mail-Einladungen zum Einstieg, und bestehende Tester erhalten E-Mail-Benachrichtigungen, dass ein neuer Build zum Testen bereit ist (Anweisungen zur Installation der Test-App finden Sie im Einrichtungshandbuch für Tester). 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, eine Einladung zum Testen der App anzunehmen, bevor diese abläuft. Wenn eine Einladung fünf Tage vor dem Ablauf steht, wird in der Firebase-Konsole neben dem Tester einer Veröffentlichung eine Ablaufbenachrichtigung angezeigt. Eine Einladung kann erneuert werden, indem Sie sie über das Dropdown-Menü in der Testerzeile erneut senden.

Nächste Schritte