Profila le prestazioni dell'app

Un'app ha prestazioni scarse se risponde lentamente, mostra animazioni discontinua, si blocca o consuma troppa energia. La risoluzione dei problemi di prestazioni comporta l'identificazione delle aree in cui la tua app fa un uso inefficiente di risorse come CPU, memoria, grafica, rete o batteria del dispositivo.

Per individuare e risolvere questi problemi, utilizza le tecniche e gli strumenti di profilazione e di benchmarking descritti in questo argomento. Per scoprire le tecniche per misurare le prestazioni ed esempi su come utilizzarle per risolvere problemi specifici, consulta Misurazione delle prestazioni.

Android Studio offre diversi strumenti di profilazione che consentono di individuare e visualizzare potenziali problemi:

  • Il profilo CPU consente di tenere traccia dei problemi di prestazioni di runtime.
  • Lo strumento Profilor memoria consente di tenere traccia delle allocazioni della memoria.
  • Lo strumento Energy Profiler monitora il consumo energetico, 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: per misurare casi d'uso importanti relativi alle prestazioni, tra cui l'avvio e il ridisegno dell'applicazione attivati da azioni come animazioni dell'interfaccia utente o scorrimento.
  • Microbenchmark: consente di misurare il costo della CPU di funzioni specifiche.

Per scoprire di più su queste librerie, visita la pagina Eseguire il benchmarking della tua app.

Applicazioni profilabili

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

Prima del giorno profileable, la maggior parte degli sviluppatori poteva profilare le app di debug solo su Android, il che comportava costi aggiuntivi significativi per le prestazioni come effetto collaterale. Questi costi in termini di prestazioni potrebbero invalidare i risultati della profilazione, soprattutto se correlati alle tempistiche. La tabella 1 riassume le differenze tra app di cui è possibile eseguire il debug e app profilabili.

Tabella 1. Riepilogo delle principali differenze tra le app di cui è possibile eseguire il debug e quelle profilabili.
Feature Debug Profilabile
Profilo di memoria Schermo intero

Sì:

No:

Profilor CPU Schermo intero

Sì:

No:

Network Profiler No
Energy Profiler No
Power Profiler
Monitoraggio eventi No

Profileable è stato introdotto per consentire agli sviluppatori di scegliere di consentire alle loro app di esporre informazioni agli strumenti di profilazione, con costi di prestazioni davvero ridotti. Un APK profilabile è essenzialmente un APK di release 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 virtuale o fisico con livello API 29 o successivo con Google Play. Per utilizzare la funzionalità, fai clic sulla freccia accanto all'icona dell'app Profilo e scegli una delle due opzioni:

Menu della build profilabile con un clic.
  • Profilo "app" con overhead ridotto avvia i profiler di CPU e memoria. Nel profiler di memoria, è abilitata solo Registra allocazioni native.

    Profilazione con overhead ridotto.
  • Profila "app" con dati completi avvia i profiler di CPU, memoria ed energia.

    Profilazione con dati completi.

Crea ed esegui manualmente un'app profilabile

Per creare manualmente un'applicazione profilabile, devi prima creare un'applicazione di rilascio e poi aggiornare il relativo file manifest, che trasforma l'applicazione di rilascio 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 per la profilazione:

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

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

Modifica la release in profilabile

  1. Converti la tua applicazione di rilascio delle versioni precedenti in un'applicazione profilabile aprendo il file AndroidManifest.xml e aggiungendo quanto segue all'interno di <application>. Per maggiori dettagli, consulta Creazione dell'applicazione per la release.

    <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 profilabile

Per creare un profilo di un'app, procedi nel seguente modo:

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

  2. In Android Studio, avvia il profiler selezionando Visualizza > Finestre degli strumenti > Profiler.

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

    Menu profilabile
  4. Il profiler deve essere allegato all'applicazione. Sono disponibili solo i profiler di CPU e memoria, con capacità limitate per il Profiler di memoria.

    Visualizzazione sessione profilabile
    Menu profilabile
    Menu profilabile

Sessioni

Puoi salvare i dati di Profiler come sessioni, che vengono conservate fino alla chiusura di 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 di app dal menu a discesa visualizzato.
  • Quando registri 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 corrente, 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 da file.

Attiva supporto aggiuntivo per 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:

  • La sequenza temporale degli eventi in tutte le finestre del profiler
  • Il numero di oggetti allocati in Memory Profiler
  • Eventi di garbage collection in Memory Profiler
  • Dettagli su tutti i file trasmessi in Network Profiler

Per attivare un 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, quindi seleziona Abilita supporto aggiuntivo per dispositivi meno recenti (livello API < 26).
  4. Crea ed esegui di nuovo l'app.

Se abiliti il supporto aggiuntivo per i dispositivi meno recenti, il processo di compilazione più lento, pertanto dovresti abilitarlo solo quando vuoi iniziare la profilazione della tua app.

Esecuzione di profiler autonomi

La versione autonoma Profiler di Android Studio ti consente di profilare la tua app senza utilizzare l'IDE completo di Android Studio.

Per eseguire i profiler autonomi, procedi nel seguente modo:

  1. Assicurati che il profiler non sia attualmente in esecuzione all'interno di Android Studio.
  2. Vai alla directory di installazione e passa alla directory bin:

    Windows/Linux: studio-installation-folder/bin

    macOS: l'uso 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 profiler.