Puoi integrare App Distribution nel processo di creazione di Android utilizzando il plug-in App Distribution Gradle. Il plug-in ti consente di specificare i tuoi tester e le note di rilascio nel file Gradle della tua app, permettendoti di configurare distribuzioni per diversi tipi di build e varianti della tua app.
Questa guida descrive come distribuire gli Android App Bundle (AAB) ai tester utilizzando il plug-in App Distribution Gradle.
App Distribution si integra con il servizio di condivisione app interno di Google Play per elaborare gli AAB caricati e fornire APK ottimizzati per le configurazioni dei dispositivi dei tester. La distribuzione degli AAB consente di effettuare le seguenti operazioni:
Esegui APK ottimizzati (forniti da Google Play) ottimizzati per i dispositivi dei tuoi tester.
Scopri ed esegui il debug di problemi specifici del dispositivo.
Prova le funzionalità dell'app bundle come Play Feature Delivery e Play Asset Delivery .
Riduci la dimensione dei download per i tuoi tester.
Autorizzazioni richieste
Per caricare AAB su App Distribution, devi collegare la tua app Firebase a un'app in Google Play . È necessario disporre del livello di accesso richiesto per eseguire queste azioni.
Se non disponi dell'accesso Firebase necessario, puoi chiedere a un proprietario del progetto Firebase di assegnarti il ruolo applicabile tramite le impostazioni IAM della console Firebase . Se hai domande sull'accesso al tuo progetto Firebase, inclusa la ricerca o l'assegnazione di un proprietario, consulta le domande frequenti su "Autorizzazioni e accesso ai progetti Firebase" .
La tabella seguente si applica al collegamento di un'app Firebase a un'app in Google Play, nonché al caricamento di AAB.
Azione nella console Firebase | Autorizzazione IAM richiesta | Ruoli IAM che includono le autorizzazioni richieste per impostazione predefinita | Ruoli aggiuntivi richiesti |
---|---|---|---|
Collega un'app Firebase a un'app in Google Play | firebase.playLinks.update | Uno dei seguenti ruoli: | Accesso a un account sviluppatore Google Play come amministratore |
Carica gli AAB nella distribuzione delle app | firebaseappdistro.releases.update | Uno dei seguenti ruoli: | –– |
Prima di iniziare
Se non l'hai già fatto, aggiungi Firebase al tuo progetto Android . Al termine di questo flusso di lavoro, avrai un'app Android Firebase nel tuo progetto Firebase.
Se non utilizzi altri prodotti Firebase, devi solo creare un progetto e registrare la tua app. Se decidi di utilizzare prodotti aggiuntivi, assicurati di completare tutti i passaggi in Aggiungere Firebase al tuo progetto Android .
Per creare un collegamento Firebase a Google Play e caricare AAB, assicurati che la tua app soddisfi i seguenti requisiti:
L'app in Google Play e l'app Firebase per Android sono entrambe registrate utilizzando lo stesso nome di pacchetto.
L'app in Google Play viene configurata nel dashboard dell'app e distribuita in uno dei percorsi di Google Play (test interno, test chiuso, test aperto o produzione).
La revisione dell'app su Google Play è completata e l'app è pubblicata. La tua app viene pubblicata se nella colonna Stato app viene visualizzato uno dei seguenti stati: Test interno (non Test interno bozza), Test chiuso, Test aperto o Produzione.
Collega la tua app Android Firebase al tuo account sviluppatore Google Play:
Nella console Firebase, vai al tuo
Nella scheda Google Play , fai clic su Collegamento .
Se disponi già di collegamenti a Google Play, fai clic su Gestisci .Segui le istruzioni visualizzate sullo schermo per abilitare l'integrazione di App Distribution e seleziona quali app Android Firebase collegare a Google Play.
Ulteriori informazioni sul collegamento a Google Play .
Passaggio 1. Configura il tuo progetto Android
Nel file Gradle a livello di root (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.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 }
Nel file Gradle del tuo modulo (a livello di app) (solitamente
<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' }
Se sei protetto da un proxy o 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. Autenticarsi con Firebase
Prima di poter utilizzare il plugin Gradle, devi prima autenticarti con il tuo progetto Firebase in uno dei seguenti modi. Per impostazione predefinita, il plug-in Gradle cerca le credenziali dalla CLI Firebase se non viene utilizzato nessun altro metodo di autenticazione.
L'autenticazione con un account di servizio ti consente di utilizzare in modo flessibile il plug-in con il tuo 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 hai già il file della chiave dell'account di servizio nel tuo ambiente di compilazione. - Imposta la variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS
in modo che punti 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:
- Nella console Google Cloud, seleziona il tuo progetto e crea un nuovo account di servizio.
- Aggiungi il ruolo di amministratore della distribuzione dell'app Firebase .
- 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 posto sicuro , poiché concede l'accesso amministrativo alla distribuzione delle app 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 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 file
Consulta Accedi con la CLI Firebase per istruzioni su come autenticare il tuo progetto.
Passaggio 3. Configura le proprietà di distribuzione
Nel file Gradle del modulo (a livello di app) (solitamente <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, seguire queste istruzioni::
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" } } } // ... }
Puoi configurare App Distribution per tipi di build e caratteristiche di prodotto .
Ad esempio, per distribuire build debug
e release
nelle versioni di prodotto "demo" e "complete", 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" } } } // ... }
Utilizzare i seguenti parametri per configurare la distribuzione:
Parametri di build della distribuzione dell'app | |
---|---|
appId | L'ID app Firebase della tua app. Necessario 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 sulla versione 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 desideri 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 desideri distribuire le build (vedi Gestisci tester ). I gruppi vengono specificati utilizzando È possibile specificare i gruppi come elenco di alias di gruppo separati da virgole: groups="qa-team, android-testers" In alternativa, puoi specificare il percorso di un file contenente un elenco di alias di gruppo separati da virgole: groupsFile="/path/to/tester-groups.txt" |
testDevices o testDevicesFile | I seguenti tipi di distribuzione fanno parte della funzionalità beta del tester automatizzato . I dispositivi di test a cui desideri distribuire le build (vedi Test automatizzati ). È possibile specificare i dispositivi di test come elenco di specifiche del dispositivo separate da punto e virgola: testDevices="model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait" In alternativa, è possibile specificare il percorso di un file contenente un elenco di specifiche del dispositivo separate da punto e virgola: testDevicesFile="/path/to/testDevices.txt" |
testUsername | Il nome utente per l'accesso automatico da utilizzare durante i test automatizzati . |
testPassword o testPasswordFile | La password per l'accesso automatico da utilizzare durante i test automatizzati . Oppure puoi specificare il percorso di un file di testo semplice contenente una password: testPasswordFile="/path/to/testPassword.txt" |
testUsernameResource | Nome risorsa per il campo nome utente per l'accesso automatico da utilizzare durante i test automatizzati . |
testPasswordResource | Nome risorsa per il campo password per l'accesso automatico da utilizzare durante i test automatizzati . |
testNonBlocking | Esegui test automatizzati in modo asincrono. Visita la console Firebase per i risultati dei test automatici. |
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 della tua app di test e invitare i tester, crea le destinazioni
BUILD-VARIANT
eappDistributionUpload BUILD-VARIANT
con il wrapper Gradle del tuo progetto, dove BUILD-VARIANT è la versione di prodotto opzionale e il tipo di build che hai configurato nel passaggio precedente. Per ulteriori informazioni sulle versioni del prodotto, consulta Configurare le varianti di build .Ad esempio, per distribuire la tua app utilizzando la variante build
release
, esegui il comando seguente:./gradlew bundleRelease 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 bundleRelease appDistributionUploadRelease
Puoi anche sovrascrivere i valori impostati nel file
build.gradle
passando gli argomenti della riga di comando nel formato--<property-name>=<property-value>
. Per esempio:Per caricare una build di debug su App Distribution:
./gradlew bundleDebug appDistributionUploadDebug --artifactType="AAB"
Per invitare ulteriori 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"
Una volta aggiunto un tester al tuo progetto Firebase, puoi aggiungerlo alle singole versioni. I tester rimossi non avranno più accesso alle versioni nel tuo progetto, ma potrebbero comunque mantenere l'accesso alle tue versioni per un periodo di tempo.
Puoi anche specificare i tester utilizzando
--file="/path/to/testers.txt"
invece di--emails
.Le attività
appDistributionAddTesters
eappDistributionRemoveTesters
accettano anche i seguenti argomenti:projectNumber
: il numero del tuo progetto Firebase.serviceCredentialsFile
: il percorso del file delle credenziali del servizio Google. Questo è lo stesso argomento utilizzato dall'azione di caricamento.
Il plugin Gradle restituisce i seguenti collegamenti dopo il caricamento della versione. Questi collegamenti ti aiutano a gestire i file binari e a garantire che i tester e gli altri sviluppatori dispongano della versione corretta:
-
firebase_console_uri
- Un collegamento alla console Firebase che mostra una singola versione. Puoi condividere questo collegamento con altri sviluppatori nella tua organizzazione. -
testing_uri
: un collegamento alla versione nell'esperienza del tester (app nativa di 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 poter 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 nel dashboard 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 che nell'elenco delle build del tester sul dispositivo di test.
I tester che non sono stati invitati a testare l'app ricevono inviti via email per iniziare, mentre i tester esistenti ricevono notifiche via email che una nuova build è pronta per il test (leggi la guida alla configurazione del tester per istruzioni su come installare l'app di prova). 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 Firebase accanto al tester viene visualizzato un avviso di scadenza su una versione. È possibile rinnovare un invito inviandolo nuovamente utilizzando il menu a discesa nella riga tester.
Prossimi passi
Implementa il feedback in-app per consentire ai tester di inviare facilmente feedback sulla tua app (compresi gli screenshot).
Scopri come visualizzare avvisi in-app ai tuoi tester quando sono disponibili per l'installazione nuove build della tua app.
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 del QA utilizzando CI/CD .