L'API ProfilingManager ti consente di raccogliere profili di rendimento degli utenti reali, come tracciamenti del sistema e dump dell'heap Java, dai dispositivi di produzione con Android 15 (livello API 35) e versioni successive. Supporta due meccanismi di raccolta:
profili basati sull'app, in cui l'app controlla la raccolta dei profili dall'inizio alla fine (Android 15 e versioni successive), e profili basati su trigger, in cui il sistema gestisce l'acquisizione in risposta agli eventi per cui registri l'interesse su Android 16 (livello API 36) e versioni successive.
Questa guida tratta i seguenti argomenti:
- Acquisisci profili: come avviare e interrompere le registrazioni dei profili basate su app e come registrarsi per le registrazioni dei profili basate su trigger.
- Recupera e carica i profili: come recuperare i profili localmente
con
adbo caricarli in background conWorkManager. - Analizza i profili: scopri come visualizzare i profili nell'interfaccia utente di Perfetto, eseguire query sui profili con PerfettoSQL, analizzare le tracce in blocco e analizzare i profili con l'AI.
- Case study di debug: come applicare
ProfilingManagerend-to-end per eseguire il debug di un ANR e eseguire il debug di un arresto anomalo OOM. - Comportamento di limitazione di frequenza e raccolta: come comprendere il comportamento di limitazione di frequenza e raccolta in produzione.
- Debug locale: come utilizzare i comandi di debug per la profilazione locale.
Tipi di profili supportati
ProfilingManager supporta la raccolta di diversi tipi di profili per consentirti di
scegliere come target problemi di prestazioni specifici nella tua app. Puoi configurare le richieste
direttamente utilizzando le API della piattaforma o i builder AndroidX Core:
- Tracciamento del sistema: acquisito utilizzando
PROFILING_TYPE_SYSTEM_TRACEoSystemTraceRequestBuilder.- Utile per diagnosticare i jank, analizzare la latenza ed eseguire il debug delle prestazioni generali.
- Dump dell'heap Java: acquisiti utilizzando
PROFILING_TYPE_JAVA_HEAP_DUMPoJavaHeapDumpRequestBuilder.- Acquisisce un'istantanea del grafico e delle dimensioni degli oggetti heap Java della tua app per il rilevamento delle perdite di memoria e l'ottimizzazione della memoria.
- Profili heap: acquisiti utilizzando
PROFILING_TYPE_HEAP_PROFILEoHeapProfileRequestBuilder.- Monitora le allocazioni della memoria nativa (o facoltativamente Java) nel tempo per ottimizzare la memoria utilizzata.
- Campionamento dello stack: acquisito utilizzando
PROFILING_TYPE_STACK_SAMPLINGoStackSamplingRequestBuilder.- Campiona gli stack di chiamate dei thread per aiutarti a comprendere l'esecuzione di codice e analizzare l'utilizzo della CPU.
Integra ProfilingManager con un agente AI
Puoi utilizzare un agente di programmazione AI per integrare ProfilingManager nella tua app.
Ad esempio, esegui il seguente prompt nell'agente di programmazione AI per configurare la raccolta di trigger di L'applicazione non risponde (ANR), sostituendo </path/to/codebase> con il percorso della tua app:
Read https://developer.android.com/topic/performance/tracing/profiling-manager/trigger-based-capture
and https://developer.android.com/topic/performance/tracing/profiling-manager/upload-worker
and integrate ProfilingManager ANR trigger collection (TRIGGER_TYPE_ANR) into my
app at </path/to/codebase>, including registering the result listener after app
startup completes and scheduling a WorkManager upload job when a profile is
received.
Puoi adattare questo prompt per configurare altri trigger di sistema (come
TRIGGER_TYPE_OOM) o configurare acquisizioni di profili basate su app utilizzando
la guida alla profilazione basata su app. Dopo l'integrazione, testa la configurazione localmente utilizzando i comandi di debug per la profilazione locale e analizza i profili raccolti con un agente AI.