Profila le prestazioni dell'app

Un'app ha prestazioni di scarso rendimento se risponde lentamente, mostra animazioni discontinue, blocchi o consuma troppa energia. La risoluzione dei problemi di prestazioni comporta l'identificazione di aree in cui la tua app utilizza in modo inefficiente risorse come CPU, memoria, grafica, rete o la batteria del dispositivo.

Per trovare e risolvere questi problemi, utilizza gli strumenti di profilazione e benchmarking descritti in questo argomento. Per tecniche di misurazione delle prestazioni ed esempi di come utilizzare queste tecniche per risolvere problemi specifici, consulta Misurare le prestazioni.

Android Studio offre diversi strumenti di profilazione per aiutarti a trovare e visualizzare i potenziali problemi:

  • Profiler CPU consente di individuare eventuali problemi di prestazioni del runtime.
  • Memory Profiler consente di monitorare le allocazioni della memoria.
  • Un profilo di energia monitora il consumo energetico, il che può contribuire al consumo della batteria.

Questi strumenti sono compatibili con Android 5.0 (livello API 21) e versioni successive. Per ulteriori informazioni sugli strumenti, consulta le altre pagine di questa sezione della guida dell'utente.

Le librerie Jetpack Benchmark consentono alla tua applicazione di misurare varie operazioni importanti:

  • Macrobenchmark: misura i casi d'uso importanti relativi alle prestazioni, inclusi l'avvio e il riprogettazione dell'applicazione attivati da azioni quali animazioni nell'interfaccia utente o scorrimento.
  • Microbenchmark: misura il costo della CPU di funzioni specifiche.

Per scoprire di più su queste librerie, consulta la pagina Benchmark della tua app.

Applicazioni profilate

Profileable è una configurazione del file manifest introdotta in Android Q. Può specificare se l'utente del dispositivo può profilare questa applicazione tramite strumenti come Android Studio, Simpleperf e Perfetto.

Prima del giorno profileable, la maggior parte degli sviluppatori poteva creare un profilo solo sulle app debuggable su Android, il che comportava un significativo aumento dei costi delle prestazioni come effetto collaterale. Questi costi di prestazioni potrebbero invalidare i risultati della profilazione, soprattutto se erano correlati ai tempi. La tabella 1 riassume le differenze tra le app di cui è possibile eseguire il debug e il profilo.

Tabella 1. Riepilogo delle principali differenze tra le app di cui è possibile eseguire il debug e il profilo.
Funzionalità Debug Profilabile
Memory Profiler Intero

Sì:

No:

Profilo di CPU Intero

Sì:

No:

Network Profiler No
Profilo dell'energia No
Power Profiler
Monitoraggio eventi No

È stato introdotto Profileable per consentire agli sviluppatori di scegliere se consentire alle loro app di esporre informazioni agli strumenti di profilazione, riducendo al contempo i costi di prestazioni minimi. Un APK profilato è essenzialmente un APK di rilascio con una riga <profileable android:shell="true"/> aggiunta nella sezione <application> del file manifest.

Crea ed esegui automaticamente un'app profilabile

Puoi configurare, creare ed eseguire un'app profilabile con un solo clic. Questa funzionalità richiede un dispositivo di test fisico o virtuale con livello API 29 o versioni successive e dotato di Google Play. Per utilizzare la funzionalità, fai clic sulla freccia accanto all'icona App profilo e scegli tra due opzioni:

Menu di creazione del profilo con un solo clic.
  • L'app del profilo con overhead basso avvia i profili di CPU e memoria. Nel Profiler di memoria, è abilitata solo l'opzione Registra allocazioni native.

    Profilazione con overhead basso.
  • L'app del profilo con dati completi avvia i profili di CPU, memoria ed energia.

    Profilazione con dati completi.

Creare ed eseguire manualmente un'app profilabile

Per creare manualmente un'applicazione di profilo, devi prima creare un'applicazione di rilascio e quindi aggiornare il relativo file manifest, in modo da trasformarla in un'applicazione profilabile. Dopo aver configurato l'applicazione profilabile, avvia il profiler e seleziona un processo profilabile da analizzare.

Crea un'app di rilascio

Per creare un'applicazione di rilascio ai fini della profilazione, procedi nel seguente modo:

  1. Firma l'applicazione con la chiave di debug aggiungendo le righe seguenti al file build.gradle dell'applicazione. Se hai già una variante funzionante della build della release, puoi andare al passaggio successivo.

            buildTypes {
              release {
                signingConfig signingConfigs.debug
              }
            }
          
  2. In Android Studio, seleziona Crea > Seleziona variante di build... e scegli la variante di release.

Cambia release in profilo

  1. Converti l'applicazione di rilascio dall'alto in un'applicazione profilabile aprendo il file AndroidManifest.xml e aggiungendo quanto segue all'interno di <application>. Per maggiori dettagli, consulta la sezione Creazione dell'applicazione per il rilascio.

    <profileable android:shell="true"/>

  2. A seconda della versione dell'SDK, potresti dover aggiungere le righe seguenti al file build.gradle dell'applicazione.

          aaptOptions {
            additionalParameters =["--warn-manifest-validation"]
          }
        

Profila un'app per cui è possibile creare un profilo

Per profilare un'app profilabile, procedi nel seguente modo:

  1. Avvia l'app dall'emulatore o dal dispositivo di sviluppo.

  2. In Android Studio, avvia il profiler selezionando Visualizza > Strumenti Windows > Profiler.

  3. Dopo l'avvio dell'applicazione, fai clic sul pulsante Pulsante Plus Profiler nel profiler per visualizzare il menu a discesa. Seleziona il tuo dispositivo, quindi seleziona la voce dell'applicazione in Altri processi profilabili.

    Menu profilabile
  4. Il Profiler deve collegare l'applicazione. Sono disponibili solo la CPU e i Memory Profiler, con capacità limitate per il Memory Profiler.

    Visualizzazione sessione profilabile
    Menu profilabile
    Menu profilabile

Sessioni

Puoi salvare i dati di Profiler come sessioni, che vengono conservati finché non esci da Android Studio. Registrando le informazioni di profilazione in più sessioni e passando da una all'altra, puoi confrontare l'utilizzo delle risorse in vari scenari.

  • Per avviare una nuova sessione, fai clic sul pulsante Avvia una nuova sessione di profilazione e seleziona un processo nell'app dal menu a discesa che viene visualizzato.
  • Quando registrate una traccia o acquisisci un dump dell'heap, Android Studio aggiunge questi dati (insieme all'attività di rete dell'app) come voce separata alla sessione corrente.
  • Per interrompere l'aggiunta di dati alla sessione attuale, fai clic su Interrompi la sessione di profilazione attuale .
  • Per importare una traccia esportata da un'esecuzione precedente di Android Studio, fai clic su Avvia nuova sessione del profiler e scegli Carica dal file.

Attiva ulteriore supporto per i dispositivi meno recenti (livello API < 26)

Per mostrarti dati di profilazione aggiuntivi quando esegui un dispositivo con Android 7.1 o versioni precedenti, Android Studio deve inserire la logica di monitoraggio nell'app compilata. Questi dati di profilazione aggiuntivi includono quanto segue:

  • Cronologia degli eventi in tutte le finestre del Profiler
  • Il numero di oggetti allocati in Memory Profiler
  • Eventi di raccolta dei rifiuti in Memory Profiler
  • Dettagli su tutti i file trasmessi in Network Profiler

Per attivare il supporto aggiuntivo per i dispositivi meno recenti, procedi nel seguente modo:

  1. Seleziona Esegui > Modifica configurazioni.
  2. Seleziona il modulo dell'app nel riquadro a sinistra.
  3. Fai clic sulla scheda Profilazione e seleziona Abilita il supporto aggiuntivo per i dispositivi meno recenti (livello API < 26).
  4. Crea ed esegui di nuovo l'app.

L'attivazione di un supporto aggiuntivo per i dispositivi meno recenti rende più lento il processo di compilazione, quindi dovresti attivarla soltanto quando vuoi iniziare a profilare la tua app.

Esegui profilatori autonomi

I profili di Android Studio autonomi ti consentono di profilare la tua app senza eseguire l'IDE completo di Android Studio.

Per eseguire i profili indipendenti, segui questi passaggi:

  1. Assicurati che il Profiler non sia attualmente in esecuzione in Android Studio.
  2. Vai alla directory di installazione e vai a bin:

    Windows/Linux: studio-installation-folder/bin

    macOS: l'utilizzo di profiler autonomi non è supportato su macOS.

  3. A seconda del sistema operativo, esegui profiler.exe o profiler.sh. Viene visualizzata la schermata iniziale di Android Studio. Quando la schermata iniziale scompare, si apre una finestra del profilo.