Distribuire app per Android ai tester tramite Gradle


Puoi integrare App Distribution nel tuo processo di compilazione Android utilizzando il Plug-in Gradle App Distribution. Il plug-in ti consente di specificare i tester e le note di rilascio nel file Gradle dell'app, in modo da configurare le distribuzioni per diversi tipi di build e varianti dell'app.

Questa guida descrive la modalità di distribuzione degli APK ai tester utilizzando: Plug-in Gradle App Distribution.

Prima di iniziare

Se non l'hai già fatto, aggiungi Firebase al tuo account Android progetto.

Se non utilizzi altri prodotti Firebase, devi solo creare un progetto e registrare la tua app. Tuttavia, se decidi di utilizzare altri prodotti in futuro, assicurati di completare tutti i passaggi nella pagina collegata sopra.

Passaggio 1: Configura il tuo progetto Android

  1. Nel file Gradle a livello principale (a livello di progetto) (<project>/build.gradle.kts o <project>/build.gradle), aggiungi il Plug-in App Distribution Gradle come dipendenza:

    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. Nel file Gradle del modulo (a livello di app) (di solito <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle), aggiungi il plug-in App Distribution Gradle:

    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. Se ti trovi dietro un proxy o un firewall aziendale, aggiungi quanto segue Proprietà di sistema Java che consente a App Distribution di caricare le tue distribuzioni su Firebase:

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

Passaggio 2: Esegui l'autenticazione con Firebase

Prima di poter utilizzare il plug-in Gradle, devi autenticarti con il tuo progetto Firebase in uno dei seguenti modi. Per impostazione predefinita, il plug-in Gradle cerca le credenziali dall'interfaccia a riga di comando Firebase se non esistono altre autenticazioni .

Passaggio 3: Configurare le proprietà di distribuzione

Nel file Gradle del modulo (a livello di app) (di solito <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle), configura App Distribution aggiungendo almeno una sezione firebaseAppDistribution.

Ad esempio, per distribuire la build release ai tester, segui queste istruzioni:

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

  // ...
}

Puoi configurare App Distribution per tipi di build e varianti di prodotto.

Ad esempio, per distribuire le build debug e release in "demo" e "completo" versioni di prodotto, segui queste istruzioni:

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

  // ...
}

Utilizza i seguenti parametri per configurare la distribuzione:

App Distribution parametri build
appId

L'ID dell'app Firebase della tua app. Obbligatorio solo se non hai il Plug-in per Gradle dei servizi Google installato. Puoi trovare l'ID app nel file google-services.json o nella console Firebase nella pagina Impostazioni generali. Il valore nel file build.gradle sostituisce il valore restituito dal plug-in google-services.

appId="1:1234567890:android:321abc456def7890"
serviceCredentialsFile

Il percorso del file JSON della chiave privata dell'account di servizio. Obbligatorio solo se utilizzi l'autenticazione dell'account di servizio.

artifactType

Specifica il tipo di file dell'app. Può essere impostato su "AAB" o "APK".

artifactPath

Percorso assoluto del file APK o AAB da caricare.

releaseNotes o releaseNotesFile

Note di rilascio per questa build.

Puoi specificare direttamente le note di rilascio o il percorso di un file di testo normale.

testers o testersFile

Gli indirizzi email dei tester che vuoi distribuire le build a.

Puoi specificare i tester come elenco di indirizzi email separati da virgole:

testers="ali@example.com, bri@example.com, cal@example.com"

In alternativa, puoi specificare il percorso di un file contenente un file elenco di indirizzi email:

testersFile="/path/to/testers.txt"
groups o groupsFile

I gruppi di tester a cui vuoi distribuire le build (consulta Gestire i tester). I gruppi vengono specificati mediante alias di gruppo, che puoi nella scheda Tester di Firebase Console App Distribution.

Puoi specificare i gruppi come un elenco di alias di gruppo separati da virgole:

groups="qa-team, android-testers"

In alternativa, puoi specificare il percorso di un file contenente un file elenco di alias di gruppo:

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

I seguenti tipi di distribuzione fanno parte della funzionalità beta Tester automatici.

I dispositivi di test su cui vuoi distribuire le build (vedi Test automatici).

Puoi specificare i dispositivi di test come elenco di specifiche del dispositivo separate da un punto e virgola:

testDevices="model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"

In alternativa, puoi specificare il percorso di un file contenente elenco delle specifiche del dispositivo:

testDevicesFile="/path/to/testDevices.txt"
testUsername

Il nome utente per l'accesso automatico da utilizzare durante i test automatici.

testPassword o testPasswordFile

La password per l'accesso automatico da utilizzare durante i test automatici.

In alternativa, puoi specificare il percorso di un file di testo normale contenente una password:

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

Nome della risorsa per il campo del nome utente per l'accesso automatico da utilizzare durante i test automatici.

testPasswordResource

Nome della risorsa per il campo password per l'accesso automatico da utilizzare durante i test automatici.

testNonBlocking

Esegui test automatici in modo asincrono. Per i risultati dei test automatici, visita la Console Firebase.

stacktrace

Stampa la traccia dello stack per le eccezioni utente. Ciò è utile quando di debug del sistema.

Passaggio 4: Distribuisci la tua app ai tester

  1. Infine, per pacchettizzare l'app di test e invitare tester, crea i target BUILD-VARIANT e appDistributionUploadBUILD-VARIANT con il tuo wrapper Gradle del progetto, dove BUILD-VARIANT è il parametro facoltativo versione di prodotto e tipo di build che hai configurato nel passaggio precedente. Per ulteriori informazioni sui sapori dei prodotti, consulta Configura le varianti di build.

    Ad esempio, per distribuire la tua app utilizzando la variante di build release, esegui il seguente comando:

    ./gradlew assembleRelease appDistributionUploadRelease
    

    In alternativa, se hai eseguito l'autenticazione con il tuo Account Google e non hai fornito le credenziali nel file di build Gradle, includi Variabile FIREBASE_TOKEN:

    export FIREBASE_TOKEN=1/a1b2c3d4e5f67890
    ./gradlew --stop // Only needed for environment variable changes
    ./gradlew assembleRelease appDistributionUploadRelease
    
  2. Puoi anche sostituire i valori impostati nel file build.gradle passando gli argomenti della riga di comando sotto forma di --<property-name>=<property-value>. Ad esempio:

    • Per caricare una build di debug su App Distribution:

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="APK"
    • Per invitare altri tester o rimuovere tester esistenti da Firebase progetto:

      ./gradlew appDistributionAddTesters
          --projectNumber=<project_number>
          --emails="anothertester@email.com, moretesters@email.com"
      ./gradlew appDistributionRemoveTesters
          --projectNumber=<project_number>
          --emails="anothertester@email.com, moretesters@email.com"

      Una volta aggiunto un tester al progetto Firebase, puoi aggiungerlo alle singole release. I tester rimossi non avranno più accesso alle release del tuo progetto, ma potrebbero comunque conservare l'accesso alle release per un determinato periodo di tempo.

    Puoi anche specificare i tester utilizzando --file="/path/to/testers.txt" anziché --emails.

    Le attività appDistributionAddTesters e appDistributionRemoveTesters accettano anche i seguenti argomenti:

    • projectNumber: il numero del tuo progetto Firebase.

    • serviceCredentialsFile: il percorso del file delle credenziali del servizio Google. Si tratta dello stesso argomento utilizzato dall'azione di caricamento.

Il plug-in Gradle genera i seguenti link dopo il caricamento della release. Questi link ti aiutano a gestire i binari e assicurano che i tester e gli altri sviluppatori dispongano della release corretta:

  • firebase_console_uri: un link alla console Firebase che mostra una singola release. Puoi condividere questo link con altri sviluppatori nel tuo .
  • testing_uri - Un link alla release nell'esperienza dei tester (App nativa Android) che consente ai tester di visualizzare la release e installare l'app sul dispositivo. Il tester deve accedere a per utilizzare il link.
  • binary_download_uri - Un link firmato che scarica direttamente installa il file binario dell'app (file APK o AAB). Il link scade dopo il giorno ora.

Una volta distribuita, la build diventa disponibile nel Dashboard App Distribution della console Firebase per 150 giorni (cinque mesi). Quando mancano 30 giorni alla scadenza della build, viene visualizzata una notifica di scadenza la console e l'elenco di build del tester sul dispositivo di test.

I tester che non sono stati invitati a testare l'app ricevono inviti via email per iniziare e i tester esistenti ricevono notifiche via email che li informano che una nuova build è pronta per il test (leggi la guida alla configurazione per i tester per istruzioni su come installare l'app di test). Puoi monitorare lo stato di ciascun tester, se ha accettato l'invito e se ha scaricato l'app, nella console Firebase.

I tester hanno 30 giorni di tempo per accettare un invito a testare l'app prima che scada. Quando mancano 5 giorni alla scadenza di un invito, viene visualizzata una notifica di scadenza nella Console Firebase accanto al tester in una release. Un invito può essere rinnovato inviandolo di nuovo tramite il menu a discesa nella riga del tester.

Passaggi successivi