Introduzione

Questo articolo fa parte di una serie relativa ad Expo, un framework per le applicazioni React.

Se non conosci Expo, sei invitato a leggere i precedenti articoli di questa serie:

Configurare l'app con app.json

In un'app gestita (managed) non abbiamo i progetti nativi iOS o Android da modificare, questo è gestito completamente da Expo. Quindi, quando vogliamo cambiare la configurazione come l'icona e l'immagine della schermata iniziale possiamo usare app.json.

Pubblicare e condividere la tua app

Per condividere l'app con il proprio team possiamo eseguire il comando expo publish, da terminale, per creare il pacchetto JavaScript e caricare tutte le risorse su una rete CDN. Maggiori informazioni sulla pubblicazione qui.

expo publish
Nota: Eseguire expo publish caricherà il codice sorgente dell'app sulla CDN di Expo (con tecnologia CloudFront). Se preferisci ospitare tutto sui tuoi server, leggi come fare in Hosting di un'app sui tuoi server.

Quando viene eseguito il comando expo publish la CLI ci avvisa dell'ottimizzazione delle risorse. Possiamo eseguire expo optimize per ottimizzare le risorse, e se possibile renderemo le nostre risorse un po' più snelle. Ripubblicare dopo questo comando per raccoglierne i frutti. Al momento della pubblicazione ti viene dato un URL persistente che puoi condividere con i colleghi, ad esempio https://expo.io/@author/app-nam. Questo link è determinato dal nome utente dell'account Expo e dal campo slug nel progetto app.json. Su iOS, puoi aprire solo i progetti che hai creato a meno che tu non abbia un piano prioritario, quindi anche i tuoi colleghi possono aprire i tuoi progetti. Un'altra opzione per poter aprire qualsiasi app gestita pubblicata all'interno del client Expo è quella di realizzare una build personalizzata del client Expo iOS. Leggi di più qui.

expo optimize

Build e deploy

iOS e Apple App Store

Prima di eseguire la build, è necessario impostare un bundleIdentifier in app.json.

...
"ios": {
      "supportsTablet": true,
      "bundleIdentifier": "com.example.app",
      "icon": "./path/to/icon-ios.png"
    },
...

Ora, quando eseguiremo expo build:ios,  si darà il via a una build con il servizio build di Expo. Ci verrà richiesto di inserire le credenziali per gli sviluppatori Apple, quindi premere Invio un paio di volte per consentire a Expo di gestire il certificato di distribuzione, la chiave push e il profilo di provisioning. Puoi anche fornire tutto questo da solo, cosa che potresti voler fare se sposti un'app esistente nel flusso di lavoro gestito (managed).

expo build:ios
Nota: il comando expo build:[ios/android] utilizza il servizio build di Expo: se preferisci eseguire build sulla tua infrastruttura, leggi come eseguire questa operazione nella creazione di app standalone sul tuo CI

Ora potresti utilizzare l'Application Loader per caricare l'app su App Store Connect, ma troviamo invece più semplice da eseguire expo upload:ios. Una volta su App Store Connect, dovrai fare un po' di lavoro manuale all'interno della loro interfaccia web. Ulteriori informazioni sulla distribuzione negli app store.

expo upload:ios

Android e Google Play Store

Le build Android seguono un processo simile alle build iOS, ma limiteremo le autorizzazioni di cui abbiamo bisogno qui solo a quelle che utilizziamo nell'app perché le autorizzazioni Android sono più statiche di iOS. L'equivalente di bundleIdentifier per iOS è package per Android:

...
"android": {
      "icon": "./path/to/icon-ios.png"
      "package": "com.example.app",
      "permission": ["READ_EXTERNAL_STORAGE", "WRITE_EXTERNAL_STORAGE"]
    },
...

Costruiremo un Android App Bundle (.aab) qui perché vogliamo un binario più snello per il Play Store:

expo build:android --type app-bundle --release-channel android

Se vuoi installare il binario su un dispositivo locale per il test, non utilizzare il flag --app-bundle e otterrai invece un file .apk. Ora dobbiamo creare l'app in Google Play Console e caricarla manualmente tramite l'interfaccia web. Dopo la prima volta che hai caricato l'app, è possibile eseguire i caricamenti successivi con il comando expo upload:android. Ulteriori informazioni sulla distribuzione negli app store.

expo upload:android

Creare e distribuire sul Web

Esegui il comando expo build:web quindi carica la directory web-build su qualsiasi host in grado di servire file statici.

expo build:web

Aggiornare l'app

Una volta che l'app è pronta per essere testata o è presente nei negozi, probabilmente non vorrai ripetere nuovamente il processo per apportare alcune piccole modifiche. Per inviare un aggiornamento, dobbiamo solo eseguire di nuovo expo publish. Quando abbiamo creato il nostro pacchetto di app Android sopra, abbiamo indicato un canale di rilascio Android specifico (ulteriori informazioni sui canali di rilascio). Per pubblicare un aggiornamento sull'app per Android è necessario aggiornare anche quel canale di rilascio. Per determinare le regole per quando le app scaricheranno e applicheranno questi aggiornamenti, leggi informazioni sulla configurazione degli aggiornamenti OTA.

Vengono rilasciati spesso aggiornamenti all'Expo SDK. Se decidi di aggiornare l'app a una versione più recente dell'SDK, le copie della versione precedente continueranno a funzionare correttamente. Gli utenti scaricheranno la copia più recente supportata dal loro client.

Conclusione

In questo tutorial abbiamo visto come pubblicare le App con il framework Expo.

Qui puoi trovare tutti gli articoli dedicati ad Expo:

Guide tutorial e consigli sull’utilizzo del framework Expo
Expo è un framework e una piattaforma per applicazioni React universali. È un insieme di strumenti e servizi costruiti attorno a React Native e piattaforme.