Come costruire un APK in Android Studio

Android Studio imposta nuovi progetti da distribuire sull'emulatore Android o su un dispositivo collegato con pochi clic. Una volta che la tua app è installata, puoi usare Apply Changes per distribuire alcune modifiche al codice e alle risorse senza costruire un nuovo APK.

Per costruire ed eseguire la tua app, segui questi passi:

  1. Nella barra degli strumenti, seleziona la tua app dal menu a discesa delle configurazioni di esecuzione.
  2. Dal menu a tendina del dispositivo di destinazione, seleziona il dispositivo su cui vuoi eseguire la tua app.
  3. Se non hai nessun dispositivo configurato, allora devi collegare un dispositivo via USB o creare un AVD per usare l'emulatore Android.
  4. Fai clic su Run .

Nota: Puoi anche distribuire la tua app in modalità debug cliccando su Debug . L'esecuzione della tua applicazione in modalità di debug ti permette di impostare punti di interruzione nel tuo codice, esaminare le variabili e valutare le espressioni in fase di esecuzione, ed eseguire strumenti di debug. Per saperne di più, vedi Debug della tua app.

Cambiare la configurazione di esecuzione/debug

Quando esegui la tua app per la prima volta, Android Studio usa una configurazione di esecuzione predefinita. La configurazione di esecuzione specifica se distribuire la tua app da un APK o da un Android App Bundle, il modulo da eseguire, il pacchetto da distribuire, l'attività da avviare, il dispositivo di destinazione, le impostazioni dell'emulatore, le opzioni logcat e altro.

La configurazione di esecuzione/debug predefinita crea un APK, lancia l'attività di progetto predefinita e usa la finestra di dialogo Select Deployment Target per la selezione del dispositivo di destinazione. Se le impostazioni predefinite non sono adatte al tuo progetto o modulo, puoi personalizzare la configurazione di run/debug, o anche crearne una nuova, a livello di progetto, di default e di modulo. Per modificare una configurazione di run/debug, seleziona Run > Edit Configurations. Per maggiori informazioni, vedi Creare e modificare le configurazioni di esecuzione/debug.

Cambiare la variante di compilazione

Per impostazione predefinita, Android Studio costruisce la versione di debug della tua applicazione, che è destinata a essere usata solo durante lo sviluppo, quando fai clic su Run.

Per cambiare la variante di compilazione che Android Studio usa, seleziona Build > Select Build Variant nella barra dei menu.

Per progetti senza codice nativo/C++, il pannello Build Variants ha due colonne: Module e Active Build Variant. Il valore Active Build Variant per il modulo determina quale variante di build l'IDE distribuisce al dispositivo collegato ed è visibile nell'editor.

main-qimg-e2e2b4076168bd35ed022279e1bea042

Figura 1. Il pannello Build Variants ha due colonne per i progetti che non hanno codice nativo/C++

Per passare da una variante all'altra, clicca sulla cella Active Build Variant per un modulo e scegli la variante desiderata dal campo elenco.

Per progetti con codice nativo/C++, il pannello Build Variants ha tre colonne: Modulo, Active Build Variant e Active ABI. Il valore Active Build Variant per il modulo determina la variante di build che l'IDE distribuisce al tuo dispositivo ed è visibile nell'editor. Per i moduli nativi, il valore Active ABI determina l'ABI che l'editor usa, ma non ha impatto su ciò che viene distribuito.

main-qimg-c0e0da0b39b50d0cb74a68c45274bf81

Figura 2. Il pannello Build Variants aggiunge la colonna Active ABI per i progetti con codice nativo/C++

Per cambiare la variante di compilazione o l'ABI, clicca sulla cella per la variante di compilazione attiva o la colonna Active ABI e scegli la variante o l'ABI desiderata dall'elenco. Dopo aver cambiato la selezione, l'IDE sincronizza il progetto automaticamente. Cambiando una colonna per un'applicazione o un modulo di libreria, la modifica verrà applicata a tutte le righe dipendenti.

Per impostazione predefinita, i nuovi progetti sono impostati con due varianti di build: una variante di debug e una di rilascio. Devi costruire la variante di rilascio per preparare la tua app per il rilascio pubblico.

Per costruire altre varianti della tua app, ognuna con diverse caratteristiche o requisiti del dispositivo, puoi definire ulteriori varianti di build.

Costruisci il tuo progetto

Il pulsante Run

main-qimg-160241ac3437e00c9deee4091c4ac598

compila e distribuisce la tua app su un dispositivo. Tuttavia, per costruire la tua app da condividere o caricare su Google Play, dovrai usare una delle opzioni nel menu Build per compilare parti o tutto il tuo progetto. Prima di selezionare una delle opzioni di compilazione elencate nella tabella 1, assicurati di selezionare la variante di compilazione che vuoi usare.

Nota: Android Studio richiede AAPT2 per costruire i bundle di app, che è abilitato per i nuovi progetti per impostazione predefinita. Tuttavia, per assicurarti che sia abilitato nei progetti esistenti, includi android.enableAapt2=true nel tuo file gradle.properties e riavvia il demone Gradle eseguendo ./gradlew --stop dalla linea di comando.

Tabella 1. Opzioni di compilazione nel menu Build.

Voce del menu

Descrizione

Make Module

Compila tutti i file sorgente nel modulo selezionato che sono stati modificati dall'ultima compilazione, e tutti i moduli da cui il modulo selezionato dipende ricorsivamente. La compilazione include i file sorgente dipendenti e qualsiasi task di compilazione associato. Puoi selezionare il modulo da compilare selezionando il nome del modulo o uno dei suoi file nella finestra Project. Questo comando non genera un APK.

Make Project

Crea tutti i moduli.

Clean Project

Cancella tutti i file di build intermedi/cache.

Rebuild Project

Esegue Clean Project per la variante di build selezionata e produce un APK.

Build Bundle(s) / APK(s) > Build APK(s)

Costruisce un APK di tutti i moduli nel progetto corrente per la loro variante selezionata. Quando la compilazione viene completata, appare una notifica di conferma che fornisce un link al file APK e un link per analizzarlo nell'APK Analyzer.

Se la variante di compilazione che hai selezionato è un tipo di compilazione debug, allora l'APK è firmato con una chiave debug ed è pronto da installare. Se hai selezionato una variante di rilascio, allora, per impostazione predefinita, l'APK non è firmato e devi firmarlo manualmente. In alternativa, puoi selezionare Build > Generate Signed Bundle / APK dalla barra dei menu.

Android Studio salva gli APK che costruisci in

nome progetto

/

nome modulo

/build/outputs/apk/.

Build Bundle(s) / APK(s) > Build Bundle(s)

Costruisce un Android App Bundle di tutti i moduli nel progetto corrente per la loro variante selezionata. Quando la compilazione viene completata, appare una notifica di conferma che fornisce un link al bundle di app e un link per analizzarlo nell'APK Analyzer.

Se la variante di compilazione che hai selezionato è un tipo di compilazione debug, allora il bundle di app è firmato con una chiave debug e puoi usare bundletool per distribuire la tua app dal bundle di app a un dispositivo collegato. Se hai selezionato una variante di rilascio, allora il bundle dell'app non è firmato per default e devi firmarlo manualmente usando jarsigner. In alternativa, puoi selezionare Build > Generate Signed Bundle / APK dalla barra dei menu.

Android Studio salva gli APK che costruisci in

nome progetto

/

nome modulo

/build/outputs/bundle/.

Generate Signed Bundle / APK

Avvia una finestra di dialogo con una procedura guidata per impostare una nuova configurazione di firma e costruire un bundle o un APK firmato. Devi firmare la tua app con una chiave di rilascio prima di poterla caricare sulla Play Console. Per maggiori informazioni sulla firma delle app, vedi Firma la tua app.

Nota: Il pulsante Run

main-qimg-160241ac3437e00c9deee4091c4ac598

costruisce un APK con testOnly="true", che significa che l'APK può essere installato solo tramite adb (che Android Studio usa). Se vuoi un APK debuggabile che le persone possano installare senza adb, seleziona la tua variante di debug e clicca su Build Bundle(s) / APK(s) > Build APK(s).

Per i dettagli sui compiti che Gradle esegue per ogni comando, apri la finestra Build come descritto nella prossima sezione. Per maggiori informazioni su Gradle e il processo di compilazione, vedi Configurare la tua compilazione.

Monitorare il processo di compilazione

Puoi visualizzare i dettagli sul processo di compilazione cliccando View > Tool Windows > Build (o cliccando Build

main-qimg-d95e918381fcb191250ddacef4918cfc

nella barra della finestra degli strumenti). La finestra mostra i compiti che Gradle esegue per costruire la tua app, come mostrato in figura 3.

main-qimg-f6d8db3dba952036e57a6b8efce2f160

Figura 3. La finestra di output Build in Android Studio

  1. Scheda Build: Mostra i compiti che Gradle esegue come un albero, dove ogni nodo rappresenta una fase di compilazione o un gruppo di dipendenze dei compiti. Se si ricevono errori in fase di costruzione o di compilazione, ispezionare l'albero e selezionare un elemento per leggere l'output dell'errore, come mostrato in figura 4. Figura 4. Ispezionare la finestra Build output per i messaggi di errore
  2. Sync tab: Mostra i compiti che Gradle esegue per sincronizzarsi con i file del progetto. Simile alla scheda Build, se incontri un errore di sincronizzazione, seleziona gli elementi nell'albero per trovare maggiori informazioni sull'errore.
  3. Restart: Esegue la stessa azione di selezionare Build > Make Project generando file di build intermedi per tutti i moduli del tuo progetto.
  4. Toggle view: Alterna la visualizzazione dell'esecuzione dei task come albero grafico alla visualizzazione dell'output testuale più dettagliato di Gradle - questo è lo stesso output che si vede nella finestra Gradle Console su Android Studio 3.0 e precedenti.

Se le tue varianti di build usano i product flavors, Gradle invoca anche i task per costruire quei product flavors. Per visualizzare l'elenco di tutti i task di compilazione disponibili, clicca su View > Tool Windows > Gradle (o clicca su Gradle

main-qimg-2dd7c549fba4fd2d29a2ebe022e0ce09

nella barra della finestra degli strumenti).

Se si verifica un errore durante il processo di compilazione, Gradle può raccomandare alcune opzioni della riga di comando per aiutarti a risolvere il problema, come --stacktrace o --debug. Per usare le opzioni della riga di comando con il tuo processo di compilazione:

  1. Apri la finestra di dialogo Impostazioni o Preferenze:Su Windows o Linux, seleziona File > Impostazioni dalla barra dei menu.Su Mac OSX, seleziona Android Studio > Preferenze dalla barra dei menu.
  2. Vai a Build, Execution, Deployment > Compiler.
  3. Nel campo di testo accanto a Command-line Options, inserisci le opzioni della riga di comando.
  4. Fai clic su OK per salvare e uscire.

Gradle applica queste opzioni della riga di comando la prossima volta che provi a costruire la tua app.

Applica modifiche

In Android Studio 3.5 e successivi, Applica modifiche ti permette di spingere le modifiche al codice e alle risorse della tua app in esecuzione senza riavviare la tua app e, in alcuni casi, senza riavviare l'attività corrente. Questa flessibilità ti aiuta a controllare quanta parte della tua app viene riavviata quando vuoi distribuire e testare piccole modifiche incrementali preservando lo stato corrente del tuo dispositivo. Apply Changes utilizza le capacità dell'implementazione JVMTI di Android che sono supportate sui dispositivi che eseguono Android 8.0 (livello API 26) o superiore. Per saperne di più su come funziona Apply Changes, vedi Android Studio Project Marble: Applica modifiche.

Requisiti

Le azioni Applica modifiche sono disponibili solo quando soddisfi le seguenti condizioni:

  • Costruisci l'APK della tua applicazione usando una variante di debug.
  • Distribuisci la tua applicazione su un dispositivo o emulatore di destinazione che esegue Android 8.0 (livello API 26) o superiore.

Usa Apply Changes

Usa le seguenti opzioni quando vuoi distribuire le tue modifiche a un dispositivo compatibile:

Apply Changes and Restart Activity

main-qimg-71a50dbba44c78128b221b7df7bb51f1.webp

Tenta di applicare sia le tue modifiche alle risorse che al codice riavviando la tua attività ma senza riavviare la tua app. Generalmente, puoi usare questa opzione quando hai modificato il codice nel corpo di un metodo o hai modificato una risorsa esistente.

Puoi anche eseguire questa azione premendo Ctrl+Alt+F10 (o Control+Shift+Command+R su macOS).

Applica modifiche al codice

Tenta di applicare solo le tue modifiche al codice senza riavviare nulla. Generalmente, puoi usare questa opzione quando hai modificato il codice nel corpo di un metodo ma non hai modificato alcuna risorsa. Se hai modificato sia il codice che le risorse, usa invece Apply Changes and Restart Activity.

Puoi anche eseguire questa azione premendo Ctrl+F10 (o Control+Command+R su macOS).

Run

Deploys all changes and restart the app. Usa questa opzione quando le modifiche che hai fatto non possono essere applicate usando una delle opzioni Applica modifiche. Per saperne di più sui tipi di modifiche che richiedono un riavvio dell'app, vedi Limitazioni di Apply Changes.

Abilita Run fallback per Apply Changes

Dopo aver cliccato su Apply Changes and Restart Activity o Apply Code Changes, Android Studio crea un nuovo APK e determina se le modifiche possono essere applicate. Se le modifiche non possono essere applicate e causano il fallimento di Apply Changes, Android Studio ti chiede invece di eseguire nuovamente la tua applicazione. Tuttavia, se non vuoi che ti venga richiesto ogni volta che questo accade, puoi configurare Android Studio per rilanciare automaticamente la tua app quando le modifiche non possono essere applicate.

Per abilitare questo comportamento, segui questi passi:

  1. Apri la finestra di dialogo Impostazioni o Preferenze:Su Windows o Linux, seleziona File > Impostazioni dalla barra dei menu.Su macOS, seleziona Android Studio > Preferenze dalla barra dei menu.
  2. Passa a Build, Execution, Deployment > Deployment.
  3. Seleziona le caselle di controllo per abilitare il fallback automatico di Run per entrambe le azioni Apply Changes.
  4. Clicca OK.

Nota: Alcuni tipi di modifiche non causano il fallimento di Apply Changes, ma richiedono comunque il riavvio manuale della tua app prima che tu possa vedere quelle modifiche. Per esempio, se si apportano modifiche al metodo onCreate() di un'attività, tali modifiche hanno effetto solo dopo che l'attività è stata rilanciata, quindi è necessario riavviare l'app per vedere tali modifiche.

Limitazioni di Apply Changes

Apply Changes è progettato per accelerare il processo di distribuzione delle app. Tuttavia, ci sono alcune limitazioni su quando può essere usato. Se incontri qualche problema mentre usi Apply Changes, segnala un bug.

Modifiche al codice che richiedono il riavvio dell'app

Alcune modifiche al codice e alle risorse non possono essere applicate fino al riavvio dell'app, incluse le seguenti:

  • Aggiungimento o eliminazione di un metodo o campo
  • Modifica delle firme dei metodi
  • Modifica dei modificatori di metodi o classi
  • Modifica dell'ereditarietà delle classi
  • Modifica dei valori negli enum
  • Aggiungimento o rimuovere una risorsa
  • Modificare il manifest dell'app
  • Modificare le librerie native (file SO)

Librerie e plugin

Alcune librerie e plugin apportano automaticamente modifiche ai file manifest dell'app'o alle risorse a cui si fa riferimento nel manifest. Questi aggiornamenti automatici possono interferire con Apply Changes nei seguenti modi:

  • Se una libreria o un plugin apporta modifiche al manifest della tua app, non puoi usare né Apply Code Changes né Apply Changes and Restart Activity e devi riavviare la tua app prima di poter vedere le tue modifiche.
  • Se una libreria o un plugin apporta modifiche ai file delle risorse della tua app, non puoi usare Apply Code Changes, e devi usare Apply Changes and Restart Activity per vedere le tue modifiche.

Puoi evitare queste limitazioni disabilitando tutti gli aggiornamenti automatici per le tue varianti di build di debug.

Per esempio, Crashlytics aggiorna le risorse dell'app con un ID di build unico durante ogni build, il che ti impedisce di usare Apply Code Changes

e ti richiede di riavviare la tua app'attività per vedere le tue modifiche. Puoi disabilitare questo comportamento in modo da poter usare Apply Code Changes insieme a Crashlytics con le tue build di debug.

Codice che fa riferimento direttamente al contenuto di un APK installato

Se il tuo codice fa riferimento direttamente al contenuto della tua app che è installato sul dispositivo, quel codice può causare crash o comportarsi male dopo aver cliccato su Apply Code Changes

. Questo comportamento si verifica perché quando si fa clic su Apply Code Changes, l'APK sottostante sul dispositivo viene sostituito durante l'installazione. In questi casi, puoi cliccare su Apply Changes e Restart Activity