Saltare al contenuto principale
Mobile Guida

La tua guida al client di sviluppo Expo

Crea, costruisci e utilizza il client di sviluppo Expo con questa guida completa. Impara le EAS costruzioni, la debuggazione, l'integrazione CI/CD e le correzioni per i problemi comuni.

Martin Donadieu

Martin Donadieu

Content Marketer

La tua Guida al Client di Sviluppo Expo

Di solito sei pronto per il client di sviluppo Expo nel momento esatto in cui Expo Go inizia a mentirti.

La app funziona nel sandbox. La ricarica veloce si sente fantastica. Poi aggiungi una dipendenza nativa, collega le notifiche push, testa un flusso OAuth o prova a riflettere il modo in cui la tua app di produzione si avvia. Improvvisamente diventa evidente il divario. Non stai più debuggando la tua app. Stai debuggando un ambiente semplificato.

È lì che il client di sviluppo Expo cambia il workflow. Mantiene il ciclo JavaScript veloce che le persone amano su Expo, ma sposta il testing in un binario nativo personalizzato che si comporta molto più come l'app che si invierà in futuro. Per gli sviluppatori solitari, questo significa meno sorprese in fase di ciclo. Per le squadre, questo significa un processo di sviluppo che può supportare costruzioni condivise, QA, ambienti di anteprima e validazione degli aggiornamenti senza fingere che Expo Go possa coprire tutto.

Elenco dei Contenuti

Perché hai bisogno di andare oltre Expo Go

Expo Go è utile all'inizio. Elimina la frizione di configurazione, fa partire velocemente un progetto React Native e ti dà un ciclo di feedback rapido. È proprio per questo che molte squadre iniziano da lì.

Il problema inizia quando l'app non è più un prototipo. Expo documenta Expo Go come un sandbox e nota che non può simulare con precisione alcune capacità native come le notifiche o l'autenticazione OAuth, mentre il modello di build di sviluppo è costruito intorno a expo-dev-client e posizionato come un "Debug" build per applicazioni di livello produttivo “Debug” build per applicazioni di livello produttivo nella Introduzione ai build di sviluppo Expo.

Una tabella di confronto che evidenzia le principali differenze e limitazioni tra le strumentazioni Expo Go e Expo Development Client.

Cosa si rompe per primo

In pratica, la prima rottura è di solito una di queste:

  • Dipendenze native: Un pacchetto ha bisogno di native code che Expo Go non include.
  • Autenticazione: Un flusso OAuth si comporta in modo diverso una volta che l'app utilizza una configurazione nativa reale.
  • Notifiche e funzionalità del dispositivo: The sandbox non riflette come l'app di produzione richiederà le autorizzazioni o riceverà gli eventi.
  • Team QA: Un tester ha bisogno di un binario stabile che rappresenti la configurazione nativa reale dell'app.

Questi non sono casi di confine. Sono fasi normali in un progetto mobile reale.

Expo Go è grande per dimostrare un'interfaccia. È un posto debole per validare il comportamento di produzione.

Perché il client di sviluppo è il passo successivo giusto

Il client di sviluppo di Expo ti da un'applicazione binaria personalizzata con gli strumenti di sviluppo di Expo integrati. Ciò significa che mantieni un'esperienza di sviluppatore forte, ma il layer nativo è ora tuo. Il client installato diventa la cosa contro cui il tuo team testa, invece di affidarsi a un contenitore generico.

Questa trasformazione conta più di quanto sembri. Una volta che si passa a un client personalizzato, la domanda cambia da “funziona questo in Expo Go?” a “funziona questo nell'app che stiamo costruendo?” E quella è la domanda giusta.

Se stai anche confrontando modelli di consegna di app più ampi, il contributo di Capgo su un alternativa a Expo è un contesto utile perché evidenzia dove le squadre iniziano a guardare oltre le workflow di sandbox-first.

La trasformazione di mentalità

Il più grande errore che vedo è trattare il client di sviluppo Expo come un compito di configurazione a una sola volta. Non è così. È una scelta di flusso di lavoro.

Si accetta un compromesso per guadagnare controllo:

Flusso di lavoroCosa rimane veloceCosa richiede più cerimonia
Expo GoIterazione di JavaScript baseQuanto dipende dalla realtà nativa
Client di sviluppo ExpoModifiche di JavaScript all'interno di un'applicazione personalizzataModifiche di dipendenza nativa e modifiche di configurazione nativa

Quello è un buon scambio in sviluppo di app professionale. Si smette di ottimizzare per la dimostrazione più facile e si inizia a ottimizzare per la consegna affidabile.

Requisiti e configurazione del progetto

Prima di costruire qualcosa, assicurati che il progetto sia in uno stato che possa sopravvivere a build ripetibili. La maggior parte degli insuccessi nei primi tentativi deriva dalla mancata configurazione di base, non da Expo stesso.

La documentazione e la guida dell'ecosistema di Expo descrivono i build di sviluppo come un "ambiente di sviluppo completamente funzionale" che rappresenta un ambiente di produzione reale una volta che le app dipendono da native __CAPGO_KEEP_0__ personalizzate o da QA di livello produttivo, come descritto nell'overview di Draftbit sulle that’s representative of a real production environment once apps depend on custom native code or production-grade QA, as covered in Draftbit’s overview of Inizia con l'account e il layer __CAPGO_KEEP_0__.

Start with the account and CLI layer

accesso a Expo __CAPGO_KEEP_0__

  1. accesso a EAS CLI
  2. EAS CLI access

Una configurazione pulita include di solito:

Una configurazione pulita include di solito: Prerequisites and Project Configuration, Before you build anything, get the project into a state that can survive repeatable builds. Most failed first attempts come from skipping basic configuration, not from Expo itself. Expo’s documentation and ecosystem guidance describe development builds as a “fully featured development environment” that’s representative of a real production environment once apps depend on custom native __CAPGO_KEEP_0__ or production-grade QA, as covered in Draftbit’s overview of Expo dev tools and development builds Start with the account and __CAPGO_KEEP_0__ layer You need two things working before the app layer matters: Expo __CAPGO_KEEP_0__ access EAS __CAPGO_KEEP_0__ access You’ll also want to be logged into your Expo account from the terminal. Teams often gloss over this because local commands can appear fine until the first remote build or credential prompt appears. A clean setup usually includes:

  • La tua sessione di account Expo: Ciò lega il lavoro locale ai servizi di costruzione remota e alla proprietà del progetto.
  • EAS CLI installato: EAS è ciò che trasforma il tuo progetto in un binario condivisibile iOS o Android.
  • Un progetto che già funziona localmente: Non introdurre complessità di costruzione prima che il funzionamento base dell'app funzioni.

Installa il pacchetto che rende possibile il flusso di lavoro

Il centro di questo setup è expo-dev-clientSenza di esso, non hai il lanciatore personalizzato e la shell nativa orientata alla debug che definisce il flusso di lavoro del client di sviluppo Expo.

Installa il pacchetto nel progetto dell'app, quindi verifica che la tua configurazione Expo sia coerente. I comandi esatti possono variare con il tuo gestore di pacchetti, ma il punto architettonico non cambia: questo pacchetto è ciò che trasforma l'app da "funziona in un sandbox condiviso" a "funziona dentro il nostro binario di sviluppo."

Regola pratica: Costruisci il client di sviluppo una volta che la lista delle dipendenze native è stabile abbastanza per che i tuoi team membri possano installare e utilizzare lo stesso binario.

Controlla la configurazione dell'applicazione fin da subito

Molte confusioni derivano dal considerare app.json o app.config.js come dati di metadati solo. Non è così. Questi file definiscono l'identità.

Assicurati che il progetto abbia:

  • Un nome univoco dell'applicazione: Utile quando gli sviluppatori installano varianti multiple su un dispositivo.
  • Un identificatore di pacchetto o bundle univoco: Essenziale per le costruzioni native e per la firma successiva.
  • Un'intento dell'ambiente chiaro: Se il team utilizza identità di staging e produzione separate, riflettilo deliberatamente.

Se il tuo ambiente locale è disordinato, vale la pena pulirlo prima della prima costruzione. Capgo's guida a impostazione di un ambiente locale Capacitor non è specifico di Expo, ma è un buon ricordo che il lavoro mobile riproducibile inizia con strumenti locali stabili e configurazione esplicita.

Cosa è una buona prima configurazione

Usa questo elenco di controllo prima di avviare EAS:

ControllaPerché è importante
expo-dev-client è installatoAbilita il comportamento del client di sviluppo personalizzato
L'account Expo è collegatoRichiesto per un utilizzo EAS liscio
Gli identificatori dell'app sono uniciPreviene conflitti di costruzione e installazione native
Il progetto inizia localmenteEvita di mescolare problemi di esecuzione con problemi di costruzione
Il team sa quando ricostruireRiduce la confusione dopo le modifiche native

L'obiettivo non è la perfezione. L'obiettivo è rendere la prima costruzione noiosa. È un successo.

Costruisci il tuo client personalizzato con EAS

Questo è il punto in cui il workflow diventa reale. Fermi di parlare di un client personalizzato e generalo.

Expo raccomanda un workflow di costruzione di sviluppo per le app con un client nativo personalizzato code: installa expo-dev-clientgenera un'app nativa con EAS Build o localmente, quindi esegui npx expo start --dev-clientExpo nota inoltre nel resoconto del workflow che le modifiche esclusivamente JavaScript rimangono veloci, mentre le modifiche native-code richiedono una nuova costruzione di sviluppo

A un'infografica a quattro passaggi che illustra il processo di creazione di un client di sviluppo Expo utilizzando gli strumenti EAS CLI.

Flusso base EAS

La sequenza è lineare anche se la prima esecuzione può sembrare strana:

  1. Installa e autentica con EAS CLI
  2. Inizia o conferma la configurazione di costruzione
  3. Crea un profilo di costruzione per lo sviluppo
  4. Avvia un costruzione per iOS o Android
  5. Installa il binario risultante su un dispositivo o simulatore

EAS ti offre consistenza. Invece di ogni sviluppatore improvvisare uno stato di costruzione nativa locale, il team può produrre binari da una definizione di costruzione condivisa.

Cosa il tuo profilo di costruzione sta realmente facendo

A development Un profilo non è solo un etichetta. Insegna al sistema di costruzione che questo binario è destinato allo sviluppo attivo, non alla distribuzione del negozio.

Che significa spesso che l'app installata dovrebbe:

  • includere il comportamento del client di sviluppo
  • essere facile per gli sviluppatori e i tester da lanciare
  • connettersi a un server Metro durante il lavoro di tutti i giorni
  • rimanere riutilizzabile fino a quando le dipendenze native non cambiano

Questo è anche dove inizia a diventare pratica la CI. Una volta esiste un profilo di build e si comporta in modo prevedibile, puoi automatizzarlo.

Se il tuo team sta pensando più ampiamente su come React Native si inserisce in un lavoro di modernizzazione più ampio, Wonderment Apps ha una prospettiva utile su React Native per la modernizzazione di AI. È rilevante perché il client di sviluppo spesso diventa parte della base layer operativa quando gli squadre stanno inviando più cambiamenti di prodotto frequenti su superfici mobili.

Un breve walkthrough può aiutare se vuoi vedere il flusso in azione:

L'installazione del risultato

Una volta che il build si conclude, trattare l'output come un binario di app reale, perché è quello che è.

  • On Android: Si installa tipicamente un .apk su un dispositivo fisico o emulatore.
  • On iOS: Lavorerai con un .ipa o un output compatibile con il simulatore a seconda del target.
  • Per i colleghi: Condividi il build attraverso i meccanismi EAS normali invece di chiedere a tutti di creare il proprio da zero a meno che non sia necessario.

Un build di sviluppo è più facile da gestire quando il team concorda su una regola: ricostruisci per le modifiche native, non per ogni code cambio.

Cosa non aspettarti

Non aspettarti che il primo build elimini la complessità nativa. La mette in un posto giusto.

Se aggiungi un nuovo modulo nativo, modifichi le autorizzazioni, aggiorni le dipendenze native di livello SDK, o modifichi la configurazione nativa guidata da plugin, avrai bisogno di un nuovo build di sviluppo fresco. È normale. La ricompensa è che il tuo lavoro JavaScript quotidiano continua a muoversi velocemente all'interno di un client che riflette l'app.

Avvio e Debug con il tuo nuovo Client

La prima volta che apri il tuo client installato e lo connetti a Metro, la differenza è evidente. Si sente come Expo, ma non più nel senso di giocattolo.

Inizia il server con npx expo start --dev-client. Poi apri il client di sviluppo sul tuo simulatore, emulatore o dispositivo fisico e connettiti attraverso l'interfaccia di avvio. Quell'avvio è uno dei cambiamenti importanti introdotti da expo-dev-client, insieme al supporto di debug come l'ispezione delle richieste di rete, come documentato nella pagina di Expo SDK per il client di sviluppo.

Un programmatore di software maschio che scrive code su un computer portatile in un ambiente di lavoro professionale.

Una sessione di sviluppo normale

Una sessione tipica assomiglia a questo:

Tu tieni aggiornata la branca più recente. Il client di sviluppo installato è già sul tuo dispositivo. Inizi Metro, lanci l'app e connettiti al server corrente. Poi lavori per lo più come facevi prima, modificando il JavaScript e vedendo gli aggiornamenti velocemente.

La grande differenza compare quando hai bisogno di ispezionare il comportamento che dipende da un ambiente nativo reale. Il client personalizzato ti consente di testare quei flussi senza dover uscire dal tuo ciclo regolare.

Il strumento di debug che conta

La tooling extra non è decorativa. Risolve i problemi quotidiani.

  • Interfaccia di avvio: Utile quando si passa tra ambienti o server ospitati da colleghi.
  • Menu del sviluppatore: Gli dà le azioni che si aspettano durante l'iterazione attiva.
  • Ispezione della rete: Aiuta quando l'interfaccia sembra rotta ma il problema reale è la mancata richiesta, lo stato di autenticazione o la configurazione di ambiente errata.

Quando API fallisce in un client di sviluppo, ispeziona la strada della richiesta e le ipotesi di ambiente prima di toccare l'interfaccia code. Il bug è spesso fuori dal componente che stai guardando.

Ecco l'avvantaggio pratico. Un singolo binario installato può validare più ambienti senza ricompilare ogni volta. È particolarmente utile quando un revisore vuole testare una anteprima di PR, un ingegnere QA vuole la versione di staging e uno sviluppatore vuole una branca locale.

Se il tuo team invia anche shell mobili basati su web, Capgo's guida definitiva per il debug dei Capacitor app è degno di essere letto per la mentalità di debug più ampia. La tooling differisce, ma la disciplina è simile: ispeziona il trasporto, l'ambiente e il comportamento di runtime prima di indovinare.

Cosa funziona bene e cosa non funziona

Cosa funziona bene:

SituazionePerché il client di sviluppo è utile
Testare le redirect dell'autenticazioneIl comportamento dell'app nativa è più simile alla produzione
Verificare l'integrazione di APIL'ispezione della rete riduce il ciclo di feedback
Switchare ambientiL'interfaccia utente del lanciatore evita rebuild non necessari
La QA del team su un solo binarioTutti testano la stessa configurazione nativa

What non funziona bene:

  • Considerare il client come un oggetto di scarto: Se il team non lo mantiene, la confusione si insinua velocemente.
  • Ignotare i confini di ricostruzione nativa: Una volta che le dipendenze native cambiano, i clienti obsoleti perdono tempo.
  • Assumere che tutte le fallite connessioni siano bug dell'app: Molti sono solo problemi di ambiente locale.

Integrare con CI/CD e Aggiornamenti in tempo reale:

Lo sviluppatore di Expo diventa molto più utile quando smette di essere una configurazione personale e diventa parte delle operazioni del team.

Un flusso di lavoro maturo separa le preoccupazioni.

I cambiamenti nativi producono un nuovo build di sviluppo.

I cambiamenti JavaScript e degli asset si muovono su un percorso di aggiornamento più veloce. I revisori e la QA non devono chiedere se stanno testando la cosa giusta perché il team ha concordato sui canali, sui profili di build e sui destinazioni di aggiornamento. Un team professionista che collabora su un flusso di lavoro di automazione del pipeline CI/CD su uno schermo di visualizzazione di un grande ufficio. Dove CI/CD si inserisce:

The client di sviluppo funziona bene con CI perché fornisce un obiettivo stabile per l'automazione.

Un modello comune assomiglia a questo:

  • Il cambiamento di richiesta di pull: CI crea o valuta una build di sviluppo quando le dipendenze native sono cambiate.
  • Gli ambienti basati sulla branca: Diverse branch si mappano a diversi canali di aggiornamento o obiettivi del server.
  • Flusso di lavoro condiviso del tester: La QA installa uno o più client di sviluppo noti e cambia contesto attraverso il lanciatore e la configurazione di aggiornamento.

Quella struttura riduce l'ambiguità. Gli sviluppatori sanno quando hanno bisogno di una ricostruzione. I tester sanno se stanno validando un cambiamento nativo o un aggiornamento consegnato in cima a un binario esistente.

Ruolo degli aggiornamenti in tempo reale

Il client di sviluppo spesso consente alle squadre di risparmiare il tempo operativo più grande. Il client di sviluppo è un luogo forte per validare il comportamento dell'aggiornamento prima della rilascio perché può passare tra i server di sviluppo e gli aggiornamenti pubblicati in un'app shell di produzione come descritto in precedenza nella documentazione di Expo.

Quella apre una suddivisione utile:

Cambia tipoPercorso di consegna
Nuova modifica nativa o permessoNuova build di sviluppo
Correzione del comportamento JavaScriptPubblica l'aggiornamento
Modifica della copia o dell'assetPubblica l'aggiornamento
Validazione dell'ambienteSvuota il canale o il server nel client installato

Per le squadre fuori dalla pila di aggiornamento Expo, Capgo's guida di integrazione CI/CD per gli aggiornamenti OTA mostra un modello operativo comparabile sul lato Capacitor. È una delle opzioni per le squadre che vogliono canali di rilascio controllati e automatizzazione per la consegna degli aggiornamenti.

Il pattern affidabile è semplice. Costruisci quando ci sono cambiamenti nativi code. Pubblica quando il binario installato contiene già tutto ciò di cui il cambiamento ha bisogno.

Abitudini di squadra che preveniren il caos

La configurazione tecnica conta, ma le regole operative contano di più:

  • Nome i canali in modo chiaro: staging, productione i nomi dei preview dovrebbero essere ovvi.
  • Documenta i trigger di ricostruzione: Un nuovo plugin, un cambio di permesso o un aggiornamento nativo SDK non dovrebbe mai essere una questione di giudizio.
  • Mantieni una strategia di un client installabile per ambiente: Troppi varianti creano rumore di supporto.
  • Fai esplicita la validazione degli aggiornamenti: Qualcuno dovrebbe verificare che l'aggiornamento si applichi e si avvii all'interno dello stesso binario che la squadra si aspetta.

At questo punto, il client di sviluppo Expo smette di essere una comodità per gli sviluppatori e diventa infrastruttura di rilascio.

Risolvere Problemi e Soluzioni Comuni

La maggior parte dei problemi del client di sviluppo Expo sono ordinari una volta che si sa dove cercare. Si sentono misteriosi perché i fallimenti accadono spesso ai confini: laptop a dispositivo, Metro all'app, configurazione nativa al runtime JavaScript.

Uno dei problemi più comuni e meno discussi è la mancata connessione a Metro sui dispositivi fisici a causa della segmentazione della rete locale, dei VPN o delle regole del firewall negli ambienti aziendali e di squadra distribuita, un punto evidenziato in questo Video di troubleshooting del client di sviluppo Expo.

Quando il client non si connette a Metro

Questo è il problema che brucia più tempo perché sembra un'app rotta quando l'app è spesso funzionante.

Controlla questi prima:

  • Assunzioni di rete identiche: I dispositivi e i laptop possono sembrare connessi mentre sono seduti su segmenti isolati.
  • Interferenza VPN: Un VPN aziendale o personale può deviare il traffico in modi che Metro non tollera bene.
  • Regole del firewall: Il tooling di sicurezza può bloccare il traffico di sviluppo locale senza renderlo evidente.
  • Politiche dei dispositivi aziendali: I dispositivi gestiti possono limitare i modelli di traffico che le tool di sviluppo dipendono.

Se il progetto funziona nel simulatore ma non su un dispositivo fisico, sospetta la rete prima di sospettare il tuo React code.

Non debuggare le fallite di connessione dall'interno dell'app prima. Conferma che il dispositivo può raggiungere effettivamente il computer che esegue Metro.

Quando sembrano rebuild random

Un'altra frustrazione comune è il sentimento che alcune modifiche sembrano apparire istantaneamente e altre ostinatamente non.

Questo solitamente significa che il team non ha interiorizzato il confine di rebuild:

SimpatiaCausa probabileSoluzione
Le aggiornamenti JavaScript si applicano normalmenteComportamento previstoContinua a lavorare nel client esistente
La nuova dipendenza nativa non compareIl layer nativo è stato modificatoCrea un nuovo build di sviluppo
Il comportamento relativo alle autorizzazioni è inconsistenteLa configurazione nativa è stata modificataRiavvia e reinstalla
Un team member vede un comportamento diversoÈ stato installato un binario client diversoSincronizza sullo stesso build

Questo non è un difetto nel workflow. È il workflow che fa esattamente ciò che dovrebbe fare.

Fallimenti di costruzione e deriva della squadra

Quando le costruzioni falliscono, la causa radice è spesso una di queste:

  • Mancanza di sincronizzazione delle dipendenze: Una versione di pacchetto non si allinea con il resto del progetto.
  • Assunzioni sui plugin nativi: Un plugin di configurazione aspetta l'impostazione del progetto non ha.
  • Confusione delle credenziali: La firma o l'accesso all'account non è coerente all'interno della squadra.
  • Aspettative locali obsolete: Qualcuno assume che una costruzione fresca non sia necessaria quando lo è.

Capgo's articolo su Problemi di aggiornamento in tempo reale comuni e soluzioni per gli sviluppatori È una lettura supplementare utile per la parte di rilascio di questo problema. Diversa pila, stesso insegnamento: molti "bug" dell'app sono realmente bug di consegna, ambiente o versione di allineamento.

Il client di sviluppo di Expo funziona meglio quando il team considera la affidabilità dell'ambiente come parte dell'ingegneria. Non come un dopo pensiero. Una volta fatto, lo setup diventa prevedibile, e prevedibile è ciò che si vuole da strumenti mobili.


Se il tuo team anche rilascia app Capacitor e ha bisogno di un modo controllato per consegnare aggiornamenti JavaScript, asset e configurazioni senza dover aspettare la revisione della store, Capgo è una delle opzioni da valutare. Fornisce aggiornamenti in tempo reale, controlli di rollout e integrazioni CI/CD per Capacitor e Electron workflow.

Aggiornamenti in tempo reale per le app Capacitor

Quando un bug del layer web è attivo, invia la correzione attraverso Capgo invece di attendere giorni per l'approvazione della store. Gli utenti ricevono l'aggiornamento in background mentre le modifiche native rimangono nel normale percorso di revisione.

Inizia subito

Ultimi articoli dal nostro Blog

Capgo ti offre le migliori informazioni che ti servono per creare un'app mobile veramente professionale.