Puoi integrare App Distribution nel processo di compilazione di Android utilizzando il plug-in Gradle di App Distribution. Il plug-in ti consente di specificare i tuoi tester e le note di rilascio nel file build.gradle
della tua app, consentendoti di configurare le distribuzioni per diversi tipi di build e varianti della tua app.
Questa guida descrive come distribuire gli APK ai tester utilizzando il plug-in App Distribution Gradle.
Prima di iniziare
Se non l'hai già fatto, aggiungi Firebase al tuo progetto Android .
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
Nel tuo file Gradle a livello di root (a livello di progetto) (
o<project>/build.gradle
), aggiungi il plugin App Distribution Gradle come dipendenza buildscript:<project>/build.gradle.kts Fantastico
buildscript { repositories { // Make sure that you have the following two repositories google() // Google's Maven repository mavenCentral() // Maven Central repository } dependencies { ... classpath 'com.android.tools.build:gradle:7.2.0' // Make sure that you have the Google services Gradle plugin dependency classpath 'com.google.gms:google-services:4.3.15' // Add the dependency for the App Distribution Gradle plugin classpath 'com.google.firebase:firebase-appdistribution-gradle:4.0.0' } }
Kotlin
buildscript { repositories { // Make sure that you have the following two repositories google() // Google's Maven repository mavenCentral() // Maven Central repository } dependencies { ... classpath("com.android.tools.build:gradle:7.2.0") // Make sure that you have the Google services Gradle plugin dependency classpath("com.google.gms:google-services:4.3.15") // Add the dependency for the App Distribution Gradle plugin classpath("com.google.firebase:firebase-appdistribution-gradle:4.0.0") } }
Nel file Gradle del modulo (a livello di app) (in genere
o<project>/<app-module>/build.gradle
), aggiungi il plug-in Gradle di App Distribution:<project>/<app-module>/build.gradle.kts Fantastico
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' }
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") }
Se ti trovi dietro un proxy o un firewall aziendale, aggiungi la seguente 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. Autenticazione con Firebase
Prima di poter utilizzare il plug-in Gradle, devi prima 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 di Firebase se non viene utilizzato nessun altro metodo di autenticazione.
L'autenticazione con un account di servizio consente di utilizzare in modo flessibile il plug-in con il sistema di integrazione continua (CI). Esistono due modi per fornire le credenziali dell'account di servizio:
- Passa il file della chiave dell'account di servizio a
build.gradle
. Potresti trovare utile questo metodo se disponi già del file della chiave dell'account di servizio nell'ambiente di compilazione. - Imposta la variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS
in modo che rimandi al file della chiave dell'account di servizio. Potresti preferire questo metodo se hai già configurato le credenziali predefinite dell'applicazione (ADC) per un altro servizio Google (ad esempio, Google Cloud).
Per eseguire l'autenticazione utilizzando le credenziali dell'account di servizio:
- In Google Cloud Console, seleziona il tuo progetto e crea un nuovo account di servizio.
- Aggiungi il ruolo di amministratore di Firebase App Distribution .
- Crea una chiave json privata e sposta la chiave in una posizione accessibile al tuo ambiente di compilazione. Assicurati di conservare questo file in un luogo sicuro , in quanto concede l'accesso come amministratore a App Distribution nel tuo progetto Firebase.
- Salta questo passaggio se hai creato la tua app dopo il 20 settembre 2019: nella console delle API di Google, abilita l' API Firebase App Distribution. Quando richiesto, seleziona il progetto con lo stesso nome del tuo progetto Firebase.
Fornisci o individua le credenziali del tuo account di servizio:
- Per passare a Gradle la chiave del tuo account di servizio, nel tuo file
build.gradle
, imposta la proprietàserviceCredentialsFile
sul file JSON della chiave privata. Per individuare le tue credenziali con ADC, imposta la variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS
sul percorso del file JSON della chiave privata. Ad esempio:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
Per ulteriori informazioni sull'autenticazione con ADC, leggi Fornire le credenziali all'applicazione.
- Per passare a Gradle la chiave del tuo account di servizio, nel tuo file
Consulta Accedi con l'interfaccia a riga di comando di Firebase per istruzioni su come autenticare il tuo progetto.
Passo 3. Configura le proprietà della tua distribuzione
Nel file Gradle del tuo modulo (a livello di app) (in genere
o
), configura App Distribution aggiungendo almeno una sezione firebaseAppDistribution
.
Ad esempio, per distribuire la build release
ai tester, segui queste istruzioni:
Fantastico
android { // ... buildTypes { release { firebaseAppDistribution { artifactType="APK" releaseNotesFile="/path/to/releasenotes.txt" testers="ali@example.com, bri@example.com, cal@example.com" } } } // ... }
Kotlin
import com.google.firebase.appdistribution.gradle.firebaseAppDistribution 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 i tipi di build e le versioni del prodotto .
Ad esempio, per distribuire build debug
e release
in versioni di prodotto "demo" e "complete", seguire queste istruzioni:
Fantastico
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" } } } // ... }
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" } } } // ... }
Utilizzare i seguenti parametri per configurare la distribuzione:
Parametri della build di distribuzione dell'app | |
---|---|
appId | L'ID app Firebase della tua app. Richiesto solo se non hai installato il plug-in Google Services Gradle. Puoi trovare l'ID app nel file 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 |
artifactPath | Percorso assoluto del file APK o AAB che desideri caricare. |
releaseNotes o releaseNotesFile | Note di rilascio per questa build. È possibile specificare direttamente le note sulla versione o il percorso di un file di testo semplice. |
testers o testersFile | Gli indirizzi email dei tester a cui vuoi distribuire le build. Puoi specificare i tester come un 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 elenco di indirizzi email separati da virgole: testersFile="/path/to/testers.txt" |
groups o groupsFile | I gruppi di tester a cui vuoi distribuire le build (vedi Gestisci tester ). I gruppi vengono specificati utilizzando È possibile specificare i gruppi come elenco separato da virgole di alias di gruppo: groups="qa-team, android-testers" In alternativa, puoi specificare il percorso di un file contenente un elenco separato da virgole di alias di gruppo: groupsFile="/path/to/tester-groups.txt" |
stacktrace | Stampa lo stacktrace per le eccezioni utente. Ciò è utile durante il debug dei problemi. |
Passaggio 4. Distribuisci la tua app ai tester
Infine, per creare un pacchetto dell'app di test e invitare i tester, crea gli obiettivi
BUILD-VARIANT
eappDistributionUpload BUILD-VARIANT
con il wrapper Gradle del tuo progetto, dove BUILD-VARIANT è il tipo di prodotto facoltativo e il tipo di build che hai configurato nel passaggio precedente. Per ulteriori informazioni sulle versioni del prodotto, consulta Configura varianti di build .Ad esempio, per distribuire la tua app utilizzando la variante build
release
, esegui il seguente comando:./gradlew assembleRelease appDistributionUploadRelease
Oppure, se ti sei autenticato con il tuo account Google e non hai fornito le credenziali nel file di build Gradle, includi la variabile
FIREBASE_TOKEN
:export FIREBASE_TOKEN=1/a1b2c3d4e5f67890 ./gradlew --stop // Only needed for environment variable changes ./gradlew assembleRelease appDistributionUploadRelease
Puoi anche sovrascrivere i valori impostati nel tuo file
build.gradle
passando gli argomenti della riga di comando sotto forma di--<property-name>=<property-value>
. Per esempio:Per caricare una build di debug in App Distribution:
./gradlew bundleDebug appDistributionUploadDebug --artifactType="APK"
Per invitare altri tester o rimuovere tester esistenti dal tuo progetto Firebase:
./gradlew appDistributionAddTesters --projectNumber=<project_number> --emails="anothertester@email.com, moretesters@email.com"
./gradlew appDistributionRemoveTesters --projectNumber=<project_number> --emails="anothertester@email.com, moretesters@email.com"
Dopo aver aggiunto un tester al tuo progetto Firebase, puoi aggiungerlo alle singole versioni. I tester che vengono rimossi non avranno più accesso alle versioni del tuo progetto, ma potrebbero comunque mantenere l'accesso alle tue versioni per un periodo di tempo.
Puoi anche specificare i tester usando
--file="/path/to/testers.txt"
invece di--emails
.Le attività
appDistributionAddTesters
eappDistributionRemoveTesters
accettano anche i seguenti argomenti:projectNumber
: il tuo numero di progetto Firebase.serviceCredentialsFile
: il percorso del file delle credenziali del servizio Google. Questo è lo stesso argomento utilizzato dall'azione di caricamento.
Il plug-in Gradle emette i seguenti collegamenti dopo il caricamento della versione. Questi collegamenti ti aiutano a gestire i file binari e assicurano che i tester e altri sviluppatori dispongano della versione corretta:
-
firebase_console_uri
- Un collegamento alla console Firebase che mostra una singola versione. Puoi condividere questo link con altri sviluppatori nella tua organizzazione. -
testing_uri
- Un collegamento alla versione nell'esperienza del tester (app nativa per Android) che consente ai tester di visualizzare le note sulla versione e installare l'app sul proprio dispositivo. Il tester deve accedere alla versione per utilizzare il collegamento. -
binary_download_uri
- Un collegamento firmato che scarica e installa direttamente il file binario dell'app (file APK o AAB). Il collegamento scade dopo un'ora.
Una volta distribuita, la build diventa disponibile nella dashboard di distribuzione app della console Firebase per 150 giorni (cinque mesi). Quando mancano 30 giorni alla scadenza della build, viene visualizzato un avviso di scadenza sia nella console sia nell'elenco delle build del tester sul dispositivo di test.
I tester che non sono stati invitati a testare l'app ricevono inviti e-mail per iniziare e i tester esistenti ricevono notifiche e-mail che una nuova build è pronta per il test (consulta la guida all'impostazione del 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 per accettare un invito a testare l'app prima che scada. Quando mancano 5 giorni alla scadenza di un invito, nella console di Firebase viene visualizzato un avviso di scadenza accanto al tester su una versione. Un invito può essere rinnovato inviandolo nuovamente utilizzando il menu a discesa nella riga del tester.
Prossimi passi
Implementa il feedback in-app per facilitare ai tester l'invio di feedback sulla tua app (compresi gli screenshot).
Scopri come mostrare avvisi in-app ai tuoi tester quando sono disponibili nuove build della tua app per l'installazione.
Visita il codelab dell'Android App Bundle per scoprire come distribuire le versioni dell'app bundle passo dopo passo.
Scopri le best practice per la distribuzione di app Android ai tester QA utilizzando CI/CD .