Sviluppo di codice iterativo

In qualità di sviluppatore per dispositivi mobili, spesso sviluppa l'interfaccia utente della tua app passo dopo passo anziché sviluppare tutto in una volta sola. Android Studio adotta questo approccio con Jetpack Compose fornendo strumenti che non richiedono una compilazione completa per ispezionare, modificare i valori e verificare il risultato finale.

Modifica in tempo reale

Live Edit è una funzionalità che consente di aggiornare in tempo reale i componenti componibili negli emulatori e nei dispositivi fisici. Questa funzionalità riduce al minimo i cambi di contesto tra la scrittura e la creazione dell'app, consentendoti di concentrarti sulla scrittura del codice per più tempo senza interruzioni.

Modifica in tempo reale ha tre modalità:

  • Manuale: le modifiche al codice vengono applicate quando vengono inviate manualmente utilizzando Ctrl+' (Comando+ su macOS)
  • Manuale al salvataggio: le modifiche al codice vengono applicate quando vengono salvate manualmente premendo Ctrl+S (Comando+S su macOS).
  • Automatica: le modifiche vengono applicate nel dispositivo o nell'emulatore quando aggiorni una funzione componibile.

La funzionalità di modifica in tempo reale si concentra sulle modifiche al codice relative a UI e UX. La modifica in tempo reale non supporta modifiche come aggiornamenti della firma dei metodi, aggiunta di nuovi metodi o modifiche alla gerarchia delle classi. Per ulteriori informazioni, consulta l'elenco delle limitazioni di Live Edit.

Questa funzionalità non sostituisce la creazione e l'esecuzione dell'app o la funzionalità Applica modifiche. È invece progettato per ottimizzare il tuo flussi di lavoro durante la creazione, il deployment e l'iterazione per lo sviluppo dell'interfaccia utente di Compose.

Il flusso di lavoro delle best practice è il seguente:

  1. Configura l'applicazione in modo che possa essere eseguita.
  2. Utilizza la modifica in tempo reale il più possibile finché non devi apportare una modifica non supportata da questa funzionalità, ad esempio l'aggiunta di nuovi metodi mentre l'app è in esecuzione.
  3. Dopo aver apportato una modifica non supportata, fai clic su Esegui Iconosimboli per riavviare l'app e riprendere la modifica dal vivo.

Iniziare a utilizzare la modifica in tempo reale

Per iniziare, segui questi passaggi per creare un'attività di composizione vuota, attivare la modifica in tempo reale per il tuo progetto e apportare modifiche con questa funzionalità.

Configurare il nuovo progetto

  1. Prima di iniziare, assicurati di avere installato Android Studio Giraffe o versioni successive e che il livello API del tuo dispositivo fisico o dell'emulatore sia almeno 30.

  2. Apri Android Studio e seleziona Nuovo progetto nella finestra di dialogo Ti diamo il benvenuto in Android Studio. Se hai già un progetto aperto, puoi crearne uno nuovo andando su File > Nuovo > Nuovo progetto.

  3. Scegli il modello Vuota attività di scrittura per Smartphone e tablet, quindi fai clic su Avanti.

    Selezione dei modelli in Android Studio
    Figura 1. Modelli tra cui scegliere. Per la modifica in tempo reale, scegli Attività di composizione vuota.
  4. Completa la finestra di dialogo Nuovo progetto con le informazioni richieste: nome, nome del pacchetto, posizione di salvataggio, SDK minimo e linguaggio di configurazione della build.

    Impostazioni progetto di esempio del passaggio 4 inserite in Android Studio
    Figura 2. Impostazioni di progetto di esempio
    .
  5. Fai clic su Fine.

Attivare la modifica in tempo reale

  1. Vai alle impostazioni per attivare la modifica in tempo reale.

    • Su Windows o Linux, vai a File > Impostazioni > Editor > Modifica live.
    • Su macOS, vai a Android Studio > Impostazioni > Editor > Live Edit.
  2. Seleziona l'opzione Live Edit e la modalità che vuoi eseguire dalle impostazioni.

    In modalità manuale, le modifiche al codice vengono inviate ogni volta che premi Ctrl+' (Comando+' su macOS). In modalità manuale al salvataggio, le modifiche al codice vengono applicate ogni volta che salvi manualmente utilizzando Control+S (Command+S su macOS). In modalità automatica, le modifiche al codice vengono applicate nel dispositivo o nell'emulatore mentre apporti le modifiche.

    Interfaccia utente della casella di controllo Modifica in tempo reale nelle impostazioni di Android Studio
    Figura 3. Impostazioni di Modifica in tempo reale.
  3. Nell'editor, apri il file MainActivity, che è il punto di contatto per la tua app.

  4. Fai clic su Esegui Pulsante dell'interfaccia utente per eseguire il deployment dell'app.

  5. Dopo aver attivato la modifica in tempo reale, viene visualizzato il segno di spunta verde Aggiornato in alto a destra nella finestra dello strumento Dispositivi in esecuzione:

    Interfaccia utente del segno di spunta verde di Live Edit

Apportare e rivedere le modifiche

Man mano che apporti le modifiche supportate nell'editor, il dispositivo di test virtuale o fisico si aggiorna automaticamente.

Ad esempio, modifica il metodo Greeting esistente in MainActivity in modo che sia il seguente:

@Composable
fun Greeting(name: String) {
    Text(
        text = "Hello $name!",
        Modifier
            .padding(80.dp) // Outer padding; outside background
            .background(color = Color.Cyan) // Solid element background color
            .padding(16.dp) // Inner padding; inside background, around text)
    )
}

Le modifiche vengono visualizzate istantaneamente sul dispositivo di test, come mostrato nella figura 4.

Modifiche al metodo di benvenuto applicate su un dispositivo
Figura 4. Dispositivo di test che mostra le modifiche dal vivo Modifica al metodo Greeting.

Risolvere i problemi relativi a Live Edit

Se non vedi le modifiche sul dispositivo di test, è possibile che Android Studio non sia riuscito a aggiornarle. Controlla se l'indicatore Modifica dal vivo indica Non aggiornato come mostrato nella Figura 5, che indica un errore di compilazione. Per informazioni sull'errore e suggerimenti su come risolverlo, fai clic sull'indicatore.

Icona di Live Edit non aggiornata
Figura 5. Indicatore dello stato della modifica in tempo reale.

Limitazioni di Live Edit

Di seguito è riportato un elenco delle limitazioni attuali.

  • [Si applica solo ad Android Studio Giraffe e versioni successive] La modifica in tempo reale richiede Compose Runtime 1.3.0 o versioni successive. Se il tuo progetto utilizza una versione precedente di Scrivi, la funzionalità di modifica in tempo reale è disabilitata.

  • [Si applica solo ad Android Studio Giraffe e versioni successive] L'editing in tempo reale richiede AGP 8.1.0-alpha05 o versioni successive. Se il tuo progetto utilizza una versione precedente di AGP, la modifica in tempo reale è disabilitata.

  • Live Edit richiede un dispositivo fisico o un emulatore con livello API 30 o superiore.

  • La modifica in tempo reale supporta solo la modifica del corpo di una funzione, il che significa che non puoi cambiare il nome o la firma della funzione, aggiungere o rimuovere una funzione o modificare i campi non funzione.

  • La funzionalità di modifica in tempo reale reimposta lo stato dell'app la prima volta che modifichi una funzione di scrittura in un file. Questo accade solo dopo la prima modifica del codice: lo stato dell'app non viene reimpostato dalle modifiche al codice successive apportate alle funzioni di composizione in quel file.

  • Le classi modificate con la funzionalità Modifica in tempo reale potrebbero subire una penalizzazione delle prestazioni. Esegui la tua app e utilizza una release build pulita se vuoi valutare il suo rendimento.

  • Devi eseguire un'esecuzione completa affinché il debugger possa funzionare sulle classi che hai modificato con Live Edit.

  • Un'app in esecuzione potrebbe avere un arresto anomalo se la modifichi con la funzionalità Modifica dal vivo. In questo caso, puoi rieseguire il deployment dell'app con il pulsante Esegui Pulsante
UI.

  • La modifica in tempo reale non esegue alcuna manipolazione del bytecode definita nel file di compilazione del progetto, ad esempio la manipolazione del bytecode che verrebbe applicata durante la compilazione del progetto utilizzando le opzioni del menu Compila o facendo clic sui pulsanti Compila o Esegui.

  • Le funzioni non componibili vengono aggiornate in tempo reale sul dispositivo o sull'emulatore e viene attivata una nuova composizione completa. La ricomposizione completa potrebbe non richiamare la funzione aggiornata. Per le funzioni non componibili, devi attivare le funzioni appena aggiornate o eseguire di nuovo l'app.

  • La funzionalità di modifica in tempo reale non viene ripristinata al riavvio dell'app. Devi eseguire di nuovo l'app.

  • Live Edit supporta solo i processi di cui è possibile eseguire il debug.

  • La modifica in tempo reale non supporta i progetti che utilizzano valori personalizzati per moduleName in kotlinOptions nella configurazione di compilazione.

  • La modifica in tempo reale non funziona con i deployment con più implementazioni. Ciò significa che non puoi eseguire il deployment su un dispositivo e poi su un altro. La funzionalità Live Edit è attiva soltanto sull'ultimo gruppo di dispositivi su cui è stato eseguito il deployment dell'app.

  • La modifica in tempo reale funziona con i deployment su più dispositivi (deployment su più dispositivi creati tramite Seleziona più dispositivi nel menu a discesa del dispositivo di destinazione). Tuttavia, non è ufficialmente supportato e potrebbero verificarsi problemi. Se riscontri problemi, segnalali.

  • Applica modifiche/Applica modifiche al codice non sono compatibili con Live Edit e richiedono il riavvio dell'app in esecuzione.

  • Live Edit al momento non supporta i progetti Android Automotive.

Domande frequenti su Modifica in tempo reale

  • Qual è lo stato attuale di Live Edit?

    La modifica in tempo reale è disponibile in Android Studio Giraffe. Per attivarla, vai a File > Impostazioni > Editor > Live Edit (Android Studio > Impostazioni > Editor > Live Edit su macOS).

  • Quando devo utilizzare Live Edit?

    Utilizza la modifica in tempo reale quando vuoi vedere rapidamente l'effetto degli aggiornamenti agli elementi UX (ad esempio aggiornamenti dei modificatori e animazioni) sull'esperienza complessiva dell'app.

  • Quando è preferibile evitare di utilizzare la funzionalità di modifica in tempo reale?

    La funzionalità di modifica in tempo reale si concentra sulle modifiche al codice relative a UI e UX. Non supporta modifiche come aggiornamenti della firma dei metodi, aggiunta di nuovi metodi o modifiche alla gerarchia delle classi. Per ulteriori informazioni, consulta Limitazioni di Live Edit.

  • Quando conviene utilizzare Compose Preview?

    Utilizza l'anteprima di Compose quando sviluppi singoli composabili. L'anteprima visualizza gli elementi di Compose e si aggiorna automaticamente per mostrare l'effetto delle modifiche al codice. L'anteprima supporta anche la visualizzazione degli elementi dell'interfaccia utente in configurazioni e stati diversi, ad esempio tema scuro, lingue e scala dei caratteri.

Modifica in tempo reale dei literal (non più supportata)

Android Studio può aggiornare in tempo reale alcune costanti letterali utilizzate nei composabili all'interno di anteprime, emulatore e dispositivo fisico. Ecco alcuni tipi supportati:

  • Int
  • String
  • Color
  • Dp
  • Boolean

Video dell'utente che modifica i literal nel codice sorgente e l'anteprima
si aggiorna
dinamicamente

Puoi visualizzare i valori letterali costanti che attivano gli aggiornamenti in tempo reale senza il passaggio di compilazione attivando le decorazioni dei valori letterali tramite l'indicatore dell'interfaccia utente di modifica in tempo reale dei valori letterali:

Attivazione della modifica in tempo reale dei literal

Applica modifiche

Applica modifiche ti consente di aggiornare il codice e le risorse senza dover eseguire nuovamente il deployment dell'app su un emulatore o un dispositivo fisico (con alcune limitazioni).

Ogni volta che aggiungi, modifichi o elimini elementi composibili, puoi aggiornare l'app senza doverla eseguire di nuovo facendo clic sul pulsante Applica modifiche al codice:

L'utente fa clic sul pulsante
"Applica modifiche"