Distribuisci le tue build iOS pre-release più velocemente con App Distribution e Fastlane

1. Prima di iniziare

4cddd34bd261cea0.png

In questo codelab imparerai a utilizzare Firebase App Distribution e il relativo plug-in fastlane per distribuire un'app per iOS ai tester, raccogliere gli UDID dei dispositivi di test e registrarli nel profilo di provisioning dell'app, in modo da poter distribuire rapidamente le build ad hoc ai tester.

Obiettivi didattici

  • Come caricare e distribuire una pre-release dell'app per iOS (ad hoc) ai tester utilizzando Firebase App Distribution e fastlane.
  • Come registrarsi come tester e scaricare l'app distribuita su un dispositivo di test.
  • Come registrare rapidamente i dispositivi di test esportando gli UDID dei dispositivi di test con il plug-in fastlane di App Distribution.
  • Come aggiornare il profilo di provisioning dell'app e caricarlo nuovamente per la distribuzione.

Che cosa ti serve

  • Un Account Google
  • Un computer Apple con XCode 11.7 o versioni successive installato
  • Un'app iOS pre-release ad hoc creata in Xcode
  • Un account sviluppatore Apple a pagamento
  • Un dispositivo iOS fisico per i test.

L' app simulatore iOS funzionerà per la maggior parte del codelab, ma i simulatori non possono scaricare le release.

Puoi comunque verificare che la configurazione funzioni controllando che il pulsante "Download" venga visualizzato nell'app web di test di App Distribution.

2. Inizia

Configurare fastlane

App Distribution si integra con fastlane per consentirti di automatizzare la distribuzione delle build pre-release della tua app. App Distribution si integra con la configurazione di fastlane.

  1. Installa e configura fastlane.
  2. Esegui fastlane init nella directory root del progetto durante la configurazione e scegli "Configurazione manuale". Vedrai una sottodirectory denominata fastlane che contiene Fastfile, Appfile e Pluginfile, che utilizzerai per configurare fastlane.

Installa l'interfaccia a riga di comando di Firebase

Dovrai anche installare l'interfaccia a riga di comando di Firebase. Se utilizzi macOS o Linux, puoi eseguire il seguente comando cURL:

curl -sL https://firebase.tools | bash

Se utilizzi Windows, leggi le istruzioni di installazione per ottenere un binario autonomo o per eseguire l'installazione tramite npm.

Dopo aver installato la CLI, l'esecuzione di firebase --version dovrebbe restituire una versione di 12.0.0 o successive:

$ firebase --version
12.0.0

3. Crea la tua app con fastlane

Crea la tua app

  1. Imposta alcune variabili globali per fastlane nel file ./fastlane/Appfile.. Includi l'ID della tua app e il tuo ID Apple:
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
  1. Crea la tua prima corsia e utilizza l'azione fastlane build_app (nota anche come gym) per creare la tua app aggiungendo quanto segue al tuo ./fastlane/Fastfile:
default_platform(:ios)

lane :build do
    build_app(export_method: "ad-hoc")
end
  1. Firma l'app per la distribuzione.

Per questo codelab, gestirai la tua certificazione e il tuo profilo utilizzando get_certificates (noto anche come cert), che genera certificati di firma localmente e archivia tutto nel portachiavi di macOS. In genere, tuttavia, è consigliabile utilizzare fastlane sync_code_signing action (noto anche come match) per gestire in modo sicuro i certificati e i profili di firma del codice del tuo team.

lane :build do
    get_certificates()
    build_app(export_method: "ad-hoc")
end
  1. Configura un profilo di provisioning per la tua app utilizzando l'azione get_provisioning_profile (nota anche come sigh). In questo modo puoi condividere la tua app con i tester.
lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true)
    build_app(export_method: "ad-hoc")
end
  1. [Facoltativo] Se non hai mai eseguito la tua app prima, esegui il seguente comando per creare l'app nella console per sviluppatori Apple:

$ fastlane produce --skip_itc

  1. Infine, crea l'app eseguendo la corsia.

Ti verrà chiesto l'ID Apple, la password (memorizzata nel portachiavi) e l'ID bundle dell'app.

$ fastlane build

Se riscontri problemi, consulta la guida alla risoluzione dei problemi di fastlane.

4. Caricare l'app su Firebase

Ora che hai creato l'app, puoi caricarla su App Distribution.

Crea un nuovo progetto Firebase

  1. Accedi alla console Firebase utilizzando il tuo Account Google.
  2. Fai clic sul pulsante per creare un nuovo progetto, quindi inserisci un nome (ad esempio, UDID Export Codelab).
  3. Fai clic su Continua.
  4. Se richiesto, leggi e accetta i termini di Firebase, quindi fai clic su Continua.
  5. (Facoltativo) Attiva l'assistenza AI nella console Firebase (denominata "Gemini in Firebase").
  6. Per questo codelab non hai bisogno di Google Analytics, quindi disattiva l'opzione Google Analytics.
  7. Fai clic su Crea progetto, attendi il provisioning del progetto, poi fai clic su Continua.

Aggiungere l'app per iOS al progetto

  1. Fai clic sull'icona iOS per creare una nuova app Firebase per iOS e inserisci l'ID bundle dell'app.

9c26c130a6c42212.png

  1. Salta i passaggi successivi e fai clic su Continua alla console. Aggiungerai gli SDK alla tua app in un secondo momento.

Il progetto e l'app sono ora disponibili nella pagina Panoramica del progetto.

66f79cc8a97fa8e9.png

Abilitare App Distribution

  1. Nella sezione Rilascia e monitora, fai clic su Distribuzione app.
  2. Dopo aver accettato i termini, fai clic su "Inizia" per attivare App Distribution per la tua app.

460213326c2784ae.png

Configurare una distribuzione in fastlane

  1. Esegui questo comando dalla radice del progetto iOS per aggiungere App Distribution alla configurazione di fastlane.

Se il comando ti chiede di selezionare un'opzione, scegli Opzione 3: RubyGems.org:

$ fastlane add_plugin firebase_app_distribution

  1. Verifica che il plug-in sia installato:

$ fastlane

L'output dovrebbe mostrare fastlane-plugin-firebase_app_distribution nell'elenco dei plug-in installati.

  1. Dopo aver verificato che il plug-in sia installato, scegli l'opzione 0 per annullare.

Autenticare il progetto Firebase

Per utilizzare il plug-in fastlane, devi prima autenticare il tuo progetto Firebase.

  1. Esegui questo comando per connettere la CLI al tuo Account Google:

$ firebase login

  1. Quando il comando stampa un link di autenticazione, aprilo in un browser.
  2. Quando ti viene richiesto, accedi al tuo Account Google e concedi l'autorizzazione ad accedere al tuo progetto Firebase.

Distribuire l'app

Ora puoi distribuire la tua app.

  1. Nella parte superiore del tuo ./fastlane/Fastfile, definisci una variabile chiamata firebase_app_id. Sostituisci <your_app_id> con l'ID app Firebase per l'app che hai creato (che puoi trovare nella pagina Impostazioni progetto).

Fastfile è scritto in Ruby, quindi utilizza la sintassi Ruby per definire le variabili.

firebase_app_id = "<your_app_id>"
  1. Aggiungi una nuova corsia chiamata distribute che chiama la corsia di build e poi distribuisce la tua app utilizzando l'azione firebase_app_distribution.
lane :distribute do
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!",
    )
end
  1. Esegui la nuova corsia per creare la tua app e una distribuzione.

$ fastlane distribute

A questo punto, il tuo Fastfile dovrebbe avere il seguente aspetto:

firebase_app_id = "<your Firebase app ID>"

default_platform(:ios)

lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true)
    build_app(export_method: "ad-hoc")
end

lane :distribute do
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!",
    )
end

Dopo aver aggiornato la console Firebase, vedrai la nuova release della tua app.

c59dc1a94de3bf3c.png

5. Invitare i tester a scaricare la tua app

Quando un tester accetta un invito a testare una build ad hoc, gli viene chiesto il permesso di condividere il suo UDID. Se accettano, App Distribution raccoglie le informazioni del dispositivo e ti invia una notifica via email. In questa sezione, ti aggiungerai come tester per scaricare e testare l'app che hai distribuito.

Aggiungerti come tester alla release

  1. Nella sezione firebase_app_id nella parte superiore del Fastfile, crea una variabile per contenere i tester e includi il tuo indirizzo email, nonché altri indirizzi email facoltativi che vuoi provare.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]
  1. Applica il metodo Array#join di Ruby per trasformare l'array app_testers in una stringa separata da virgole, come previsto dal parametro testers. Quindi, passa il risultato al parametro testers di firebase_app_distribution.
lane :distribute do
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!"
        testers: app_testers.join(","),
    )
end

A questo punto, il tuo Fastfile dovrebbe avere il seguente aspetto:

firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]

default_platform(:ios)

lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true)
    build_app(export_method: "ad-hoc")
end

lane :distribute do
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!",
        testers: app_testers.join(","),
    )
end
  1. Esegui di nuovo la corsia.

$ fastlane distribute

Una volta eseguita la corsia, i tester che hai aggiunto riceveranno un'email di invito da App Distribution che li informa della nuova release disponibile. Nella console Firebase, ora puoi vedere i tester che hai aggiunto nella release della tua app.

2e0fc9603b868af8.png

Poiché hai incluso il tuo indirizzo email, riceverai un'email da Firebase App Distribution che ti invita a testare l'app. Ora sei il primo tester. Continua con la sezione seguente per configurarti come tester sul tuo dispositivo di test.

Registrare il dispositivo di test

In qualità di tester, devi accedere a Google sul tuo dispositivo di test per accedere alle release dell'app per cui hai ricevuto un invito a eseguire il test. Poiché la build di test è una release ad hoc, devi anche registrare il dispositivo di test installando il profilo Firebase. Successivamente, le release che diventano disponibili possono essere accessibili dall'app web di test di App Distribution, utilizzando il web clip aggiunto alla schermata Home del dispositivo.

  1. Sul dispositivo di test iOS, apri l'email inviata da Firebase App Distribution e tocca il link Inizia. Assicurati di aprire il link in Safari.
  2. Ora ti trovi nell'app web per i tester di App Distribution. Nella pagina visualizzata, accedi con il tuo Account Google e tocca Accetta invito.

d833407de251b89f.png

  1. Ora puoi vedere le uscite per le quali hai ricevuto un invito. Tocca Registra dispositivo in una delle uscite.

fd141215e54a938d.png

  1. Quando richiesto, scarica il profilo Firebase, quindi installalo nell'app Impostazioni.

L'installazione del profilo concede a Firebase l'autorizzazione a:

  • Registra il dispositivo di test raccogliendo l'ID dispositivo univoco (UDID) del dispositivo.

Firebase invia a tutti i proprietari e gli editor del progetto Firebase un'email che include l'UDID del dispositivo di test.

  • Installa un web clip nella schermata Home del dispositivo di test. Il web clip apre l'app web di test di App Distribution, che ti consente di installare e accedere a tutte le tue app di test.

Nell'app web per i tester di App Distribution, il tuo dispositivo di test è ora registrato per la release della tua app.

fe93d649dfa25877.png

Ora che hai condiviso l'UDID del tuo dispositivo di test con Firebase, puoi riprendere il tuo ruolo di sviluppatore. Nella scheda Tester della dashboard di App Distribution, le informazioni sui tester ora vengono visualizzate nella release dell'app con lo stato "Accettato":

7b9f665a63a384cf.png

Nella sezione successiva, aggiungerai l'UDID del dispositivo al profilo di provisioning della tua app, quindi creerai una versione dell'app che funzioni con il tuo dispositivo di test.

Esportare gli UDID dei dispositivi di test

In qualità di sviluppatore, riceverai un'email da Firebase contenente l'UDID del dispositivo di test. In alternativa, App Distribution semplifica la raccolta di più UDID di nuovi dispositivi contemporaneamente consentendoti di esportarli direttamente dalla console Firebase come file di testo non elaborato.

  1. Per esportare tutti gli UDID, apri la scheda Tester e gruppi.

241a9936898a2fc0.png

  1. Fai clic su Esporta UDID Apple.

bcf0c26c522d9b4e.png

Il file deve contenere l'UDID del dispositivo di test.

Device ID            Device Name                            Device Platform
1234567890     udid.codelab.tester@gmail.com - iPhone SE 2nd Gen        ios

Gli UDID possono essere esportati anche dalla riga di comando utilizzando fastlane, come vedrai nella sezione successiva.

6. Aggiorna il profilo di provisioning dell'app e ricompilala

Ora, aggiungi l'UDID del dispositivo di test al profilo di provisioning dell'app, ricompila una versione dell'app che funzioni per il tuo dispositivo e distribuisci la nuova versione.

Aggiungi corsia di esportazione UDID

  1. Aggiungi un'altra variabile nella parte superiore del Fastfile e impostala su un percorso del file in cui verranno scaricati gli UDID dei dispositivi dei tester.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]
tester_udids_file = "tester_udids.txt"
  1. Configura una nuova corsia che utilizzi l'azione di esportazione UDID del plug-in App Distribution per scaricare gli UDID dei tester, proprio come hai fatto dalla console.
lane :download_udids do
    firebase_app_distribution_get_udids(
        app: firebase_app_id,
        output_file: tester_udids_file,
    )
end
  1. Esegui la seguente corsia per scaricare gli UDID.

$ fastlane download_udids

  1. Stampa il file scaricato, che dovrebbe contenere gli UDID dei dispositivi di test.

$ cat tester_udids.txt

Aggiungere dispositivi alla console per sviluppatori Apple

  1. Crea la seguente corsia per aggiungere gli UDID all'elenco dei dispositivi nella console per sviluppatori Apple, in modo da poterli aggiungere al profilo di provisioning utilizzando l'azione register_devices di fastlane:
lane :add_new_devices do
    register_devices(devices_file: tester_udids_file)
end
  1. Quindi, esegui la corsia:

$ fastlane add_new_devices

Dovresti visualizzare i nuovi dispositivi nell'elenco dei dispositivi della Console per gli sviluppatori.

Aggiungere dispositivi al profilo di provisioning

  1. Aggiungi l'argomento force al passaggio del profilo di provisioning nella corsia build per forzare il rilevamento di nuovi dispositivi ogni volta che crei una build.
lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true, force: true)
    build_app(export_method: "ad-hoc")
end

Esegui di nuovo la corsia per creare e caricare

Ora aggiorna la corsia distribute con le nuove corsie per aggiungere i dispositivi al profilo di provisioning, ricompila l'app e distribuiscila.

  1. Chiama le nuove corsie da distribute:
lane :distribute do
    download_udids
    add_new_devices
    build
    firebase_app_distribution(
        app: "1:123456789:ios:abcd1234",
        release_notes: "Try out this app!"
        testers: app_testers.join(","),
    )
end
  1. Esegui la corsia distribute:

$ fastlane distribute

A questo punto, il tuo Fastfile dovrebbe avere il seguente aspetto:

firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]
tester_udids_file = "tester_udids.txt"

default_platform(:ios)

lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true, force: true)
    build_app(export_method: "ad-hoc")
end

lane :distribute do
    download_udids
    add_new_devices
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!",
        testers: app_testers.join(","),
    )
end

lane :download_udids do
    firebase_app_distribution_get_udids(
        app: firebase_app_id,
        output_file: tester_udids_file,
    )
end

lane :add_new_devices do
    register_devices(devices_file: tester_udids_file)
end

Scaricare la release dal dispositivo di test

Ora che la tua app include gli UDID dei dispositivi di test, questi possono essere installati sui dispositivi di test.

e275f73d57cc8fb1.png

  1. Sul dispositivo di test, torna all'app web di test di App Distribution utilizzando il link nell'email o l'icona nella schermata Home del dispositivo.

Quando vai all'app codelab UDID, puoi vedere che la release è pronta per il download.

dad6d03b6ad78746.png

  1. Se utilizzi un dispositivo fisico, premi Download, quindi installa ed esegui l'app.

7. Complimenti

Ora hai configurato App Distribution e fastlane per automatizzare la procedura di test pre-release. Ora, quando vuoi invitare altri tester o aggiungere i loro UDID alla tua app, devi eseguire un solo comando: fastlane distribute.

In questo modo non dovrai più raccogliere singolarmente gli UDID dai tester o accedere all'Apple Developer Console per aggiornare gli elenchi di dispositivi o i profili di provisioning. Non è nemmeno necessario aprire Xcode.

Questo flusso di lavoro è facile da configurare per l'esecuzione oraria o giornaliera nell'ambiente di integrazione continua.

Per approfondire