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.
Feature | Debug | Profilabile |
---|---|---|
Profilo di memoria | Schermo intero |
Sì: No:
|
Profilor CPU | Schermo intero |
Sì:
No:
|
Network Profiler | Sì | No |
Energy Profiler | Sì | No |
Power Profiler | Sì | Sì |
Monitoraggio eventi | Sì | 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.](https://developer.android.com/static/studio/images/one-click-profileable-build-menu.png?authuser=8&hl=it)
Profilo "app" con overhead ridotto avvia i profiler di CPU e memoria. Nel profiler di memoria, è abilitata solo Registra allocazioni native.
Profila "app" con dati completi avvia i profiler di CPU, memoria ed energia.
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:
-
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 } }
-
In Android Studio, seleziona Crea > Seleziona variante build... e scegli la variante di release.
Modifica la release in profilabile
-
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"/>
-
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:
-
Avvia l'app dall'emulatore di sviluppo o dal dispositivo.
-
In Android Studio, avvia il profiler selezionando Visualizza > Finestre degli strumenti > Profiler.
-
Dopo l'avvio dell'applicazione, fai clic sul pulsante
nel profiler per visualizzare il menu a discesa. Seleziona il tuo dispositivo, quindi la voce dell'applicazione in Altri processi profilabili.
-
Il profiler deve essere allegato all'applicazione. Sono disponibili solo i profiler di CPU e memoria, con capacità limitate per il Profiler di memoria.
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:
- Seleziona Esegui > Modifica configurazioni.
- Seleziona il modulo dell'app nel riquadro a sinistra.
- Fai clic sulla scheda Profilazione, quindi seleziona Abilita supporto aggiuntivo per dispositivi meno recenti (livello API < 26).
- 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:
- Assicurati che il profiler non sia attualmente in esecuzione all'interno di Android Studio.
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.
- A seconda del sistema operativo, esegui
profiler.exe
oprofiler.sh
. Viene visualizzata la schermata iniziale di Android Studio. Quando la schermata iniziale scompare, si apre una finestra del profiler.