Guida per il tuo percorso di miglioramento del rendimento
Ti diamo il benvenuto al quarto giorno della settimana dedicata al rendimento. Ora che hai scoperto alcuni degli strumenti e delle best practice che abbiamo introdotto di recente, come l'ottimizzatore R8 e l'ottimizzazione guidata dal profilo con i profili di baseline e i profili di avvio, potresti chiederti da dove iniziare il tuo percorso di miglioramento del rendimento.
Abbiamo creato una guida passo passo per il miglioramento del rendimento per il tuo team di sviluppo mobile, indipendentemente dal fatto che tu sia uno sviluppatore che sta iniziando a lavorare sul rendimento della sua app o che tu abbia un team intero dedicato al miglioramento del rendimento di Android.
La guida per il miglioramento del rendimento è suddivisa in 5 livelli. Inizieremo con il livello 1, che introduce strumenti per il rendimento che richiedono un impegno minimo di adozione, e arriveremo al livello 5, ideale per le app che hanno le risorse per gestire un framework di rendimento personalizzato.
Esplora il livello che ti interessa di più:
Livello 1: utilizza il monitoraggio dei campi fornito da Play Console
Ti consigliamo di utilizzare innanzitutto Android vitals in Play Console per visualizzare i dati di monitoraggio dei campi raccolti automaticamente, in modo da ottenere informazioni sulla tua applicazione con il minimo sforzo.
Android vitals è l'iniziativa di Google per raccogliere e mostrare automaticamente questi dati dei campi.
Ecco una spiegazione di come forniamo questi dati:
- Raccogli dati: quando un utente attiva questa opzione, il suo dispositivo Android registra automaticamente gli eventi chiave di rendimento e stabilità di tutte le app, inclusa la tua.
- Aggrega dati: Google Play raccoglie e anonimizza questi dati dagli utenti della tua app.
- Mostra insight: i dati vengono presentati nella dashboard Android vitals all'interno di Google Play Console.
La dashboard Android vitals monitora molte metriche, ma alcune sono designate come metriche vitals essenziali. Queste sono le più importanti perché possono influire sulla visibilità e sul ranking della tua app sul Google Play Store.
Metriche vitals essenziali
METRICHE DI QUALITÀ TECNICA ESSENZIALI DI GOOGLE PLAY Per massimizzare la visibilità su Google Play, mantieni la tua app al di sotto delle soglie relative alle prestazioni scadenti per queste metriche. | |
| Percentuale di arresti anomali percepiti dagli utenti | La percentuale di utenti attivi giornalieri che hanno riscontrato almeno un arresto anomalo che probabilmente è stato notato |
| Percentuale di ANR percepiti dagli utenti | La percentuale di utenti attivi giornalieri che hanno riscontrato almeno un errore ANR che probabilmente è stato notato |
| Utilizzo della batteria eccessivo | La percentuale di sessioni di quadrante in cui l'utilizzo della batteria supera il 4,44% all'ora |
| Novità: wakelock parziali eccessivi | La percentuale di sessioni utente in cui l'utilizzo cumulativo di wakelock non esenti supera le 2 ore |
Le metriche vitals essenziali includono la percentuale di arresti anomali percepiti dagli utenti, la percentuale di errori ANR, l'utilizzo eccessivo della batteria e la nuova metrica relativa ai wakelock parziali eccessivi.
Percentuale di ANR percepiti dagli utenti
Puoi utilizzare la dashboard ANR di Android vitals per visualizzare le analisi dello stack dei problemi che si verificano sul campo e ottenere insight e consigli su come risolvere il problema.
Puoi approfondire un errore ANR specifico che si è verificato per visualizzare l'analisi dello stack e gli insight su cosa potrebbe causare il problema.
Inoltre, consulta le nostre indicazioni sugli errori ANR per diagnosticare e risolvere gli scenari comuni in cui potrebbero verificarsi errori ANR.
Percentuale di arresti anomali percepiti dagli utenti
Utilizza la dashboard degli arresti anomali di Android vitals per eseguire il debug degli arresti anomali e visualizzare un campione di analisi dello stack che si verificano all'interno dell'app.
La nostra documentazione fornisce anche indicazioni sulla risoluzione dei problemi relativi ad arresti anomali specifici. Ad esempio, la guida alla risoluzione dei problemi relativi ai servizi in primo piano illustra i modi per identificare e risolvere gli scenari comuni in cui si verificano arresti anomali.
Utilizzo della batteria eccessivo
Per ridurre le sessioni di quadrante con un utilizzo eccessivo della batteria su Wear OS, consulta la guida di Wear su come migliorare e risparmiare la batteria.
[Novità] Wakelock parziali eccessivi
Di recente abbiamo annunciato che le app che superano la soglia dei wakelock parziali eccessivi potrebbero essere soggette a un trattamento aggiuntivo a partire dal 1° marzo 2026.
Per i dispositivi mobili, la metrica Android vitals si applica ai wakelock non esenti acquisiti quando lo schermo è spento e l'app è in background o esegue un servizio in primo piano. Android vitals considera eccessivo l'utilizzo di wakelock parziali se i wakelock vengono mantenuti per almeno due ore in un periodo di 24 ore e se ciò influisce su più del 5% delle sessioni dell'app, in media su 28 giorni.
Per eseguire il debug e risolvere i problemi relativi ai wakelock eccessivi, consulta il nostro post del blog tecnico.
Consulta la nostra documentazione di Android vitals e continua il tuo percorso per sfruttare al meglio Android vitals.
Livello 2: segui le voci di azione del punteggio di rendimento dell'app
Poi, passa all'utilizzo del punteggio di rendimento dell'app per trovare le voci di azione ad alto impatto per migliorare il rendimento dell'app.
Il punteggio di rendimento dell'app Android è un framework standardizzato per misurare il rendimento tecnico della tua app. Ti assegna un punteggio compreso tra 0 e 100, dove un numero inferiore indica un maggiore margine di miglioramento.
Per ottenere risultati facili, devi iniziare con il punteggio di rendimento statico. Si tratta spesso di modifiche alla configurazione o di aggiornamenti degli strumenti che forniscono miglioramenti significativi del rendimento.
Passaggio 1: esegui la valutazione statica
La valutazione statica valuta la configurazione del progetto e l'adozione degli strumenti. Questi sono spesso i modi più rapidi per migliorare il rendimento.
Vai alla sezione Punteggio statico della pagina della classifica e segui questi passaggi:
- Valuta la versione del plug-in Android per Gradle (AGP).
- Adotta la riduzione R8 in modo incrementale o, idealmente, utilizza R8 in modalità completa per ridurre e ottimizzare il codice dell'app.
- Adotta i profili Baseline, che migliorano la velocità di esecuzione del codice dal primo avvio, fornendo miglioramenti del rendimento per ogni nuova installazione dell'app e ogni aggiornamento dell'app.
- Adotta i profili di avvio per migliorare il layout DEX. I profili di avvio vengono utilizzati dal sistema di compilazione per ottimizzare ulteriormente le classi e i metodi che contengono, migliorando il layout del codice nei file DEX dell'APK.
- Esegui l'upgrade all'ultima versione di Jetpack Compose.
Passaggio 2: esegui la valutazione dinamica
Dopo aver applicato i miglioramenti statici facili, utilizza la valutazione dinamica per convalidare i miglioramenti su un dispositivo reale. Puoi farlo manualmente con un dispositivo fisico e un cronometro.
Vai alla sezione Punteggio dinamico della pagina della classifica e segui questi passaggi:
- Configura l'ambiente di test con un dispositivo fisico. Valuta la possibilità di utilizzare un dispositivo di fascia bassa per esagerare i problemi di rendimento, in modo da renderli più facili da individuare.
- Misura il tempo di avvio dal launcher. Esegui l'avvio a freddo dell'app dall'icona in Avvio applicazioni e misura il tempo necessario per renderla interattiva.
- Misura il tempo di avvio dell'app da una notifica, con l'obiettivo di ridurre il tempo di avvio della notifica a meno di un paio di secondi.
- Misura il rendimento del rendering scorrendo le schermate e le animazioni principali.
Una volta completati questi passaggi, riceverai un punteggio compreso tra 1 e 100 per i punteggi statici e dinamici, che ti darà un'idea del rendimento della tua app e di dove concentrarti.
Livello 3: utilizza i framework di test del rendimento locali
Dopo aver iniziato a valutare il rendimento dinamico, potresti trovare troppo noioso misurare il rendimento manualmente. Valuta la possibilità di automatizzare i test del rendimento utilizzando framework di test del rendimento come Macrobenchmark e UiAutomator.
Macrobenchmark 💚 UiAutomator
Considera Macrobenchmark e UiAutomator come due strumenti che funzionano insieme: Macrobenchmark è lo strumento di misurazione. È come un cronometro e un contatore della frequenza frame che viene eseguito al di fuori dell'app. È responsabile dell'avvio, della registrazione delle metriche (come il tempo di avvio o i frame persi) e dell'arresto dell'app. UiAutomator è l'utente robot. La libreria ti consente di scrivere codice per interagire con lo schermo del dispositivo. Può trovare un'icona, toccare un pulsante, scorrere un elenco e altro ancora.
Come scrivere un test
Quando scrivi un test, racchiudi il codice UiAutomator all'interno di un blocco Macrobenchmark.
- Definisci il test: utilizza
@MacrobenchmarkRule. - Inizia a misurare: chiama
benchmarkRule.measureRepeated. - Gestisci la UI: all'interno di questo blocco, utilizza il codice UiAutomator per avviare l'app, trovare gli elementi della UI e interagire con essi.
Ecco un esempio di snippet di codice che mostra come testare un elenco di Compose per il jank di scorrimento.
benchmarkRule.measureRepeated(
// ...
metrics = listOf(
FrameTimingMetric(),
),
startupMode = StartupMode.COLD,
iterations = 10,
) {
// 1. Launch the app's main activity
startApp()
// 2. Find the list using its resource ID and scroll down
onElement { viewIdResourceName == "$packageName.my_list" }
.fling(Direction.DOWN)
}
4. Esamina i risultati: ogni esecuzione del test fornisce informazioni misurate con precisione per darti i dati migliori sul rendimento della tua app.
timeToInitialDisplayMs min 1894.4, median 2847.4, max 3355.6 frameOverrunMs P50 -3.2, P90 6.2, P95 10.4, P99 119.5
Casi d'uso comuni
Macrobenchmark fornisce diverse metriche principali predefinite. StartupTimingMetric ti consente di misurare con precisione l'avvio dell'app. FrameTimingMetric ti consente di comprendere il rendimento del rendering di un'app durante il test.
Abbiamo una guida dettagliata e completa all'utilizzo di Macrobenchmark e UiAutomator insieme a esempi di codice per continuare a imparare.
Livello 4: utilizza strumenti di analisi delle tracce come Perfetto
Gli strumenti di analisi delle tracce come Perfetto vengono utilizzati quando devi vedere oltre il codice dell'applicazione. A differenza dei debugger o dei profiler standard che vedono solo il tuo processo, Perfetto acquisisce l'intero stato del dispositivo, inclusi la pianificazione del kernel, la frequenza della CPU, altri processi e servizi di sistema, fornendoti un contesto completo per i problemi di prestazioni.
Consulta la nostra playlist di YouTube Debug del rendimento per istruzioni video sul debug del rendimento utilizzando le tracce di sistema, Android Studio Profiler e Perfetto.
Come utilizzare Perfetto per eseguire il debug del rendimento
Il flusso di lavoro generale per il debug del rendimento utilizzando gli strumenti di analisi delle tracce consiste nel registrare, caricare e analizzare la traccia.
Passaggio 1: registra una traccia
Puoi registrare una traccia di sistema utilizzando diversi metodi:
- Registra una traccia manualmente sul dispositivo direttamente dalle opzioni sviluppatore.
- Utilizza il profiler CPU di Android Studio.
- Utilizza la UI di Perfetto.
Passaggio 2: carica la traccia
Una volta ottenuto il file di traccia, devi caricarlo nello strumento di analisi.
- Apri Chrome e vai a ui.perfetto.dev.
- Trascina il file
.perfetto-trace(o.pftrace) direttamente nella finestra del browser. - La UI elaborerà il file e visualizzerà la sequenza temporale.
Passaggio 3: analizza la traccia
Puoi utilizzare la UI di Perfetto o Android Studio Profiler per esaminare i problemi di rendimento. Guarda questo episodio della serie MAD Skills sul rendimento, in cui la nostra ingegnere del rendimento Carmen Jackson parla di Perfetto Traceviewer.
Scenari per l'ispezione delle tracce di sistema utilizzando Perfetto
Perfetto è uno strumento per esperti e può fornire informazioni su tutto ciò che è accaduto sul dispositivo Android durante l'acquisizione di una traccia. Questo è particolarmente utile quando non riesci a identificare la causa principale di un rallentamento utilizzando i log standard o i profiler di base.
Debug del jank (frame persi)
Se la tua app si blocca durante lo scorrimento, Perfetto può mostrarti esattamente perché un frame specifico non ha rispettato la scadenza.
Se il problema è dovuto all'app, potresti notare che il thread principale è in esecuzione per un periodo di tempo prolungato eseguendo un'analisi pesante; questo indica scenari in cui devi spostare il lavoro nell'elaborazione asincrona.
Se il problema è dovuto al sistema, potresti notare che il thread principale è pronto per l'esecuzione, ma il pianificatore del kernel della CPU ha dato la priorità a un servizio di sistema diverso, lasciando l'app in attesa (contesa della CPU). Questo indica scenari in cui potrebbe essere necessario ottimizzare l'utilizzo delle API della piattaforma.
Analisi dell'avvio lento dell'app
L'avvio è complesso e comporta l'inizializzazione del sistema, la creazione di fork dei processi e il caricamento delle risorse. Perfetto visualizza questa sequenza temporale con precisione.
Puoi verificare se stai aspettando le chiamate Binder (comunicazione tra processi). Se onCreate attende a lungo una risposta da PackageManager del sistema, Perfetto mostrerà chiaramente lo stato bloccato.
Puoi anche verificare se la tua app esegue più lavoro del necessario durante l'avvio. Ad esempio, se crei e disponi più visualizzazioni di quelle necessarie per l'app, puoi vedere queste operazioni nella traccia.
Esame del consumo eccessivo della batteria e dell'utilizzo della CPU
Poiché Perfetto vede l'intero sistema, è perfetto per trovare i consumi di energia invisibili.
Puoi identificare i processi che mantengono i wakelock, impedendo al dispositivo di entrare in modalità di sospensione nelle tracce "Stato del dispositivo". Scopri di più nel nostro post del blog sui wakelock. Inoltre, utilizza Perfetto per verificare se i job in background vengono eseguiti troppo spesso o se riattivano la CPU inutilmente.
Livello 5: crea il tuo framework di monitoraggio del rendimento
Il livello finale è per le app che hanno team con risorse per gestire un framework di monitoraggio del rendimento.
La creazione di un framework di monitoraggio del rendimento personalizzato su Android comporta l'utilizzo di diverse API di sistema per acquisire dati durante il ciclo di vita dell'applicazione, dall'avvio all'uscita e durante scenari specifici ad alto carico.
Utilizzando ApplicationStartInfo, ProfilingManager e ApplicationExitInfo, puoi creare un sistema di telemetria robusto che segnala come è stata avviata l'app, informazioni dettagliate su cosa ha fatto durante l'esecuzione e perché è stata chiusa.
ApplicationStartInfo: monitoraggio dell'avvio dell'app
Disponibile a partire da Android 15 (API 35), ApplicationStartInfo fornisce metriche dettagliate sull'avvio dell'app sul campo. I dati includono se si è trattato di un avvio a freddo, a caldo o a caldo e la durata delle diverse fasi di avvio.
Questo ti aiuta a sviluppare una metrica di avvio di base utilizzando i dati di produzione per ottimizzare ulteriormente ciò che potrebbe essere difficile da riprodurre localmente. Puoi utilizzare queste metriche per eseguire test A/B per ottimizzare il flusso di avvio.
L'obiettivo è registrare con precisione le metriche di avvio senza instrumentare manualmente ogni fase di inizializzazione.
Puoi eseguire query su questi dati in modo lazy dopo l'avvio dell'applicazione.
ProfilingManager: acquisizione del motivo del rallentamento
ProfilingManager (API 35) consente alla tua app di attivare in modo programmatico le tracce di sistema sui dispositivi degli utenti. Questo è utile per rilevare problemi di rendimento temporanei che non puoi riprodurre localmente.
L'obiettivo è registrare automaticamente una traccia quando viene rilevato che un Critical User Journey specifico e altamente critico viene eseguito lentamente o presenta problemi di prestazioni.
Puoi registrare un listener che si attiva quando vengono soddisfatte condizioni specifiche o attivarlo manualmente quando rilevi un problema di prestazioni come jank, memoria eccessiva o consumo eccessivo della batteria.
Consulta la nostra documentazione su come acquisire un profilo, recuperare e analizzare i dati di profilazione e utilizzare i comandi di debug.
ApplicationExitInfo: monitoraggio del motivo della chiusura dell'app
ApplicationExitInfo (API 30) ti indica il motivo della chiusura del processo precedente. Questo è fondamentale per trovare arresti anomali nativi, errori ANR o chiusure del sistema dovute a memoria utilizzata eccessiva (OOM). Potrai anche ottenere una traccia di tombstone dettagliata utilizzando l'API getTraceInputStream.
L'obiettivo dell'API è comprendere i problemi di stabilità che non attivano i reporter di arresti anomali Java standard (come Low Memory Kills).
Devi attivare questa API al successivo avvio dell'app.
Passaggi successivi
Il miglioramento del rendimento di Android è un percorso passo passo. Non vediamo l'ora di scoprire come migliorerai il rendimento utilizzando questi strumenti.
Sintonizzati domani per Ask Android
Hai ridotto le dimensioni dell'app con R8 e hai ottimizzato il runtime con l'ottimizzazione guidata dal profilo. Misura il rendimento dell'app.
Unisciti a noi domani per la sessione live di Ask Android. Poni le tue domande ora utilizzando #AskAndroid e ricevi le risposte degli esperti.
Continua a leggere
-
Guide pratiche
Riconoscendo che il consumo eccessivo della batteria è una priorità per gli utenti Android, Google ha adottato misure significative per aiutare gli sviluppatori a creare app più efficienti dal punto di vista energetico.
Alice Yuan • Lettura di 8 minuti
-
Guide pratiche
Oggi siamo felici di annunciare una nuova credenziale email verificata emessa da Google, che gli sviluppatori possono ora recuperare direttamente dall'API Digital Credential del Gestore delle credenziali di Android.
Niharika Arora, Jean-Pierre Pralle • Lettura di 3 minuti
-
Guide pratiche
Che tu stia utilizzando Gemini in Android Studio, Gemini CLI, Antigravity o agenti di terze parti come Claude Code o Codex, la nostra missione è garantire che lo sviluppo Android di alta qualità sia possibile ovunque.
Adarsh Fernando, Esteban de la Canal • Lettura di 4 minuti
Resta al passo con le novità
Ricevi ogni settimana nella tua casella di posta gli ultimi insight sullo sviluppo Android.