Distribuire app per Android ai tester utilizzando fastlane


Questa guida descrive come distribuire le build AAB ai tester utilizzando fastlane, una piattaforma open source che automatizza la creazione e il rilascio di app per iOS e Android. Segue semplici istruzioni definite in un Fastfile. Dopo aver configurato fastlane e Fastfile, puoi integrare App Distribution con la configurazione di fastlane.

App Distribution si integra con il servizio di condivisione interna delle app di Google Play per elaborare gli AAB che carichi e pubblicare APK ottimizzati per le configurazioni dei dispositivi dei tester. La distribuzione di AAB ti consente di:

  • Esegui APK ottimizzati (pubblicati da Google Play) ottimizzati per i dispositivi dei tuoi tester.

  • Individua ed esegui il debug di problemi specifici del dispositivo.

  • Testa funzionalità dell'app bundle come Play Feature Delivery e Play Asset Delivery.

  • Riduci le dimensioni dei download per i tester.

Autorizzazioni obbligatorie

Per caricare AAB su App Distribution, devi collegare la tua app Firebase a un'app in Google Play. Per eseguire queste azioni, devi disporre del livello di accesso richiesto.

Se non disponi dell'accesso a Firebase necessario, puoi chiedere a un proprietario del progetto Firebase di assegnarti il ruolo applicabile tramite le impostazioni IAM della Firebaseconsole. Se hai domande sull'accesso al tuo progetto Firebase, inclusa la ricerca o l'assegnazione di un proprietario, consulta le domande frequenti "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 obbligatori
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 in App Distribution firebaseappdistro.releases.update Uno dei seguenti ruoli: ––

Prima di iniziare

  1. Se non l'hai già fatto, aggiungi Firebase al tuo progetto Android. Al termine di questo flusso di lavoro, disporrai di un'app Firebase per Android nel tuo progetto Firebase.

    Se non utilizzi altri prodotti Firebase, devi solo creare un progetto e registrare la tua app. Se decidi di utilizzare altri prodotti, assicurati di completare tutti i passaggi descritti in Aggiungere Firebase al progetto Android.

  2. Per creare un collegamento da 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 con lo stesso nome di pacchetto.

    • L'app in Google Play viene configurata nella dashboard dell'app e distribuita a uno dei canali Google Play (test interno, chiuso, aperto o produzione).

    • La revisione dell'app in Google Play è stata completata e l'app pubblicata. L'app viene pubblicata se la colonna Stato applicazione mostra uno dei seguenti stati: test interno (non test interno in versione bozza), test chiuso, test aperto o produzione.

  3. Collega l'app Firebase per Android al tuo account sviluppatore Google Play:

    1. Nella console Firebase, vai a Impostazioni progetto, quindi seleziona la scheda Integrazioni.

    2. Nella scheda Google Play, fai clic su Collega.
      Se hai già dei collegamenti a Google Play, fai clic su Gestisci.

    3. Segui le istruzioni sullo schermo per attivare l'integrazione di App Distribution e selezionare le app Firebase per Android da collegare a Google Play.

    Scopri di più sul collegamento a Google Play.

Passaggio 1: Configurare fastlane

  1. Installa e configura la corsia Fast.

  2. Per aggiungere App Distribution alla configurazione di Fastlane, esegui il seguente comando dalla radice del progetto Android:

    fastlane add_plugin firebase_app_distribution

    Se il comando ti chiede un'opzione, seleziona Option 3: RubyGems.org.

Passaggio 2: Esegui l'autenticazione con Firebase

Prima di poter utilizzare il plug-in fastlane, devi prima autenticarti con il tuo progetto Firebase in uno dei seguenti modi. Per impostazione predefinita, il plug-in fastlane cerca le credenziali dalla CLI Firebase se non viene utilizzato nessun altro metodo di autenticazione.

Passaggio 3: Configura il tuo Fastfile e distribuisci la tua app

  1. In una corsia ./fastlane/Fastfile, aggiungi un blocco firebase_app_distribution. Utilizza i seguenti parametri per configurare la distribuzione:
    Parametri firebase_app_distribution
    app

    Obbligatorio: l'ID app Firebase della tua app. Puoi trovare l'ID app nella console Firebase, nella pagina Impostazioni generali.

    app: "1:1234567890:android:0a1b2c3d4e5f67890"
    firebase_cli_token

    Un token di aggiornamento stampato quando autentichi l'ambiente CI con l'interfaccia a riga di comando Firebase (leggi Utilizzare l'interfaccia a riga di comando con i sistemi CI per saperne di più).

    service_credentials_file

    Il percorso del file JSON dell'account di servizio Google. Consulta la sezione precedente per scoprire come eseguire l'autenticazione utilizzando le credenziali dell'account di servizio.

    android_artifact_type

    Specifica il tipo di file Android (APK o AAB).

    android_artifact_path

    Sostituisce apk_path (ritirato). Percorso assoluto al file APK o AAB che vuoi caricare. Se non specificata, la corsia Fast determina la posizione del file in base alla corsia in cui è stato generato il file.

    release_notes
    release_notes_file

    Note di rilascio per questa build.

    Puoi specificare direttamente le note di rilascio:

    release_notes: "Text of release notes"

    In alternativa, specifica il percorso di un file di testo normale:

    release_notes_file: "/path/to/release-notes.txt"
    testers
    testers_file

    Gli indirizzi email dei tester che vuoi invitare.

    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 di testo normale contenente un elenco di indirizzi email separati da virgole:

    testers_file: "/path/to/testers.txt"
    groups
    groups_file

    I gruppi di tester che vuoi invitare (consulta Gestire i tester). I gruppi vengono specificati utilizzando gli alias di gruppo, che puoi cercare nella console Firebase.

    Puoi specificare i gruppi come elenco separato da virgole:

    groups: "qa-team, trusted-testers"

    In alternativa, puoi specificare il percorso di un file di testo normale contenente un elenco di nomi di gruppi separati da virgole:

    groups_file: "/path/to/groups.txt"
    test_devices
    test_devices_file

    I seguenti tipi di distribuzione fanno parte della funzionalità beta del tester automatico.

    I dispositivi di test su cui vuoi distribuire le build (consulta la sezione Test automatici).

    Puoi specificare i dispositivi di test come elenco separato da punto e virgola dei dispositivi di test:

    test_devices: "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 di testo normale contenente un elenco di dispositivi di test separati da due punti:

    test_devices_file: "/path/to/test-devices.txt"
    test_username

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

    test_password
    test_password_file

    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:

    test_password_file: "/path/to/test-password.txt"
    test_username_resource

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

    test_password_resource

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

    test_non_blocking

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

    debug

    Un flag booleano. Puoi impostarlo su true per stampare un output di debug dettagliato.

platform :android do
    desc "My awesome app"
    lane :distribute do
        build_android_app(task: "bundle", ...)
        # build_android_app is a built-in fastlane action.
        release = firebase_app_distribution(
            app: "1:123456789:android:abcd1234",
            testers: "tester1@company.com, tester2@company.com",
            release_notes: "Lots of amazing new features to test out!",
            android_artifact_type: "AAB"
        )
    end
end

Per rendere la build disponibile per i tester, esegui la tua corsia:

fastlane <lane>

Il valore restituito dell'azione è un hash che rappresenta la release caricata. Questo hash è disponibile anche utilizzando lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE]. Per ulteriori informazioni sui campi disponibili in questo hash, consulta la documentazione dell'API REST.

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

  • Un link alla console Firebase che mostra una singola release. Puoi condividere questo link con altri sviluppatori della tua organizzazione.
  • Un link alla release nell'esperienza dei tester (app nativa per Android) che consente ai tester di visualizzare le note di release e installare l'app sul proprio dispositivo. Il tester deve avere accesso alla release per utilizzare il link.
  • Un link firmato che scarica e installa direttamente il file binario dell'app (file APK o AAB). Il link scade dopo un'ora.

Dopo aver distribuito la build, questa sarà disponibile nella dashboard App Distribution della console Firebase per 150 giorni. Quando manca 1 mese alla scadenza della build, viene visualizzata una notifica di scadenza nella console e nell'elenco delle build del tester sul suo dispositivo di test.

I tester che non sono stati invitati in precedenza a testare l'app ricevono email con gli inviti per iniziare. I tester esistenti ricevono notifiche via email che li informano che una nuova build è pronta per il test. Per scoprire come installare l'app di test, consulta la guida alla configurazione del tester. Puoi monitorare lo stato di ciascun tester per determinare se ha accettato l'invito e se ha scaricato l'app nella console Firebase.

(Facoltativo) Per incrementare automaticamente il numero di build ogni volta che crei una nuova release in App Distribution, puoi utilizzare l'azione firebase_app_distribution_get_latest_release e, ad esempio, il plug-in fastlane increment_version_code. Il codice seguente fornisce un esempio di come incrementare automaticamente il numero di build:

lane :increment_version do
  latest_release = firebase_app_distribution_get_latest_release(
    app: "<your Firebase app ID>"
  )
  increment_version_code({ version_code: latest_release[:buildVersion].to_i + 1 })
end

Per scoprire di più sull'azione firebase_app_distribution_get_latest_release, consulta Ottenere informazioni sull'ultima release dell'app.

Passaggio 4 (facoltativo) Gestione dei tester per la distribuzione

Puoi aggiungere e rimuovere tester dal tuo progetto o gruppo utilizzando il file Fastfile o eseguendo direttamente le azioni Fastlane. L'esecuzione delle azioni sostituisce direttamente i valori impostati in Fastfile.

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

Se hai un numero elevato di tester, ti consigliamo di utilizzare i gruppi.

Utilizza Fastfile

# Use lanes to add or remove testers from a project.
lane(:add_testers) do
  firebase_app_distribution_add_testers(
    emails: "foo@google.com,bar@google.com"
    # or file: "/path/to/testers.txt"
    group_alias: "qa-team" # (Optional) add testers to this group
  )
end

lane(:remove_testers) do
  firebase_app_distribution_remove_testers(
    emails: "foo@google.com,bar@google.com"
    # or file: "/path/to/testers.txt"
    group_alias: "qa-team" # (Optional) remove testers from this group only
  )
end
# Add or remove testers with the terminal
$ fastlane add_testers
$ fastlane remove_testers

Esegui azioni corsia preferenziale

fastlane run firebase_app_distribution_create_group display_name:"QA Team" alias:"qa-team"
fastlane run firebase_app_distribution_add_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_remove_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_delete_group alias:"qa-team"

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

Le attività firebase_app_distribution_add_testers e firebase_app_distribution_remove_testers accettano anche i seguenti argumenti:

  • project_name: il numero del tuo progetto Firebase.
  • group_alias (facoltativo): se specificato, i tester vengono aggiunti (o rimossi) dal gruppo specificato.
  • service_credentials_file: il percorso del file delle credenziali del servizio Google.
  • firebase_cli_token: token di autenticazione per l'interfaccia a riga di comando Firebase.

service_credentials_file e firebase_cli_token sono gli stessi argumenti utilizzati dall'azione di caricamento.

(Facoltativo) Passaggio 5. Ottenere informazioni sull'ultima release dell'app

Puoi utilizzare l'azione firebase_app_distribution_get_latest_release per recuperare informazioni sull'ultima release della tua app in Distribuzione app, tra cui informazioni sulla versione dell'app, note di rilascio e ora di creazione. I casi d'uso includono l'aumento automatico della versione e il trasferimento delle note di rilascio dalla release precedente.

Il valore restituito dell'azione è un hash che rappresenta l'ultima release. Questo hash è disponibile anche utilizzando lane_context[SharedValues::FIREBASE_APP_DISTRO_LATEST_RELEASE]. Per ulteriori informazioni sui campi disponibili in questo hash, consulta la documentazione dell'API REST.

Parametri

Parametri firebase_app_distribution_get_latest_release
app

Obbligatorio: l'ID app Firebase della tua app. Puoi trovare l'ID app nella console Firebase, nella pagina Impostazioni generali.

app: "1:1234567890:android:0a1b2c3d4e5f67890"
firebase_cli_token

Un token di aggiornamento stampato quando autentichi il tuo ambiente CI con l'interfaccia a riga di comando Firebase (leggi Utilizzare l'interfaccia a riga di comando con sistemi CI per ulteriori informazioni).

service_credentials_file

Il percorso del file JSON dell'account di servizio Google. Consulta la sezione precedente per scoprire come eseguire l'autenticazione utilizzando le credenziali dell'account di servizio.

debug

Un flag booleano. Puoi impostarlo su true per stampare un output di debug dettagliato.

Passaggi successivi