Google is committed to advancing racial equity for Black communities. See how.
This page was translated by the Cloud Translation API.
Switch to English

Tracciamento delle transizioni delle finestre

WinScope fornisce l'infrastruttura e gli strumenti per registrare e analizzare gli stati WindowManager e SurfaceFlinger durante e dopo le transizioni delle finestre. WinScope registra tutti gli stati dei servizi di sistema pertinenti in un file di traccia, che è possibile utilizzare per riprodurre e scorrere le transizioni.

Catturare tracce

Acquisisci tracce tramite Impostazioni rapide o adb sui dispositivi che eseguono userdebug o eng build.

Impostazioni rapide

Per acquisire tracce dalle Impostazioni rapide :

  1. Abilita opzioni sviluppatore .
  2. Vai a Opzioni sviluppatore > Riquadri sviluppatore impostazioni rapide .
  3. Abilita traccia WinScope .
  4. Apri Impostazioni rapide .
  5. Toccare Traccia Winscope per abilitare la traccia.
  6. Esegue le transizioni delle finestre sul dispositivo.
  7. Al termine, aprire Impostazioni rapide e toccare Traccia Winscope per disabilitare la traccia.

Le tracce sono scritte in /data/misc/wmtrace/wm_trace.pb e /data/misc/wmtrace/layers_trace.pb . Le tracce sono anche incluse nelle segnalazioni di bug.

adb

Quando si acquisiscono tracce tramite adb , acquisire le tracce WindowManager e SurfaceFlinger separatamente.

Tracce di WindowManager

Per acquisire le tracce di WindowManager:

  1. Abilita traccia:
    adb shell cmd window tracing start
  2. Disabilita traccia:
    adb shell cmd window tracing stop
  3. Prendi il file di traccia:
    adb pull /data/misc/wmtrace/wm_trace.pb wm_trace.pb

Se lo si desidera, è possibile modificare la configurazione del registro predefinita di varie impostazioni per le tracce di WindowManager:

  • Imposta la frequenza di registro (per la transazione o il frame):
    adb shell cmd window tracing [ frame  |  transaction ]
  • Configurare il livello dettagliato per le voci del registro:
    adb shell cmd window tracing level [ all  |  trim  |  critical ]
  • Imposta la dimensione massima del buffer (in KB):
    adb shell cmd window tracing size size-value 
  • Scarica lo stato del buffer, il livello di registro, la capacità rimanente e il numero di elementi:
    adb shell cmd window tracing status

Tracce di SurfaceFlinger

Per acquisire le tracce di SurfaceFlinger:

  1. Abilita traccia:
    adb shell su root service call SurfaceFlinger 1025 i32 1
  2. Disabilita traccia:
    adb shell su root service call SurfaceFlinger 1025 i32 0
  3. Prendi il file di traccia:
    adb pull /data/misc/wmtrace/layers_trace.pb layers_trace.pb

Puoi facoltativamente modificare la configurazione del registro predefinita di varie impostazioni per le tracce di SurfaceFlinger:

  • Imposta la dimensione massima del buffer (in KB):
    adb shell su root service call SurfaceFlinger 1029 i32 size-value 
  • Configurare il livello dettagliato per le voci del registro:
    adb shell su root service call SurfaceFlinger 1033 i32 flags 

Generazione di dump di stato

WinScope legge un'istantanea degli stati WindowManager e SurfaceFlinger dalle segnalazioni di bug. Le segnalazioni di bug memorizzano gli stati come file proto separati all'interno della cartella proto . Per generare i dump di stato utilizzando adb , eseguire i comandi seguenti.

WindowManager

adb exec-out dumpsys window --proto > window_dump.pb

SurfaceFlinger

adb exec-out dumpsys SurfaceFlinger --proto > sf_dump.pb

Analisi delle tracce

Per analizzare un file di traccia, utilizzare l'app Web WinScope. Costruisci l'app dalla sorgente o aprila dalla directory predefinita.

  1. Scarica artefatti predefiniti dal repository di origine Android:
    curl 'https://android.googlesource.com/platform/prebuilts/misc/+/master/common/winscope/winscope.html?format=TEXT' | base64 -d > winscope.html
  2. Apri gli artefatti scaricati in un browser web.
  3. Dopo l'apertura di WinScope, selezionare OPEN FILE per caricare un file di traccia.

Utilizzando WinScope

Dopo aver aperto un file di traccia in WinScope, è possibile analizzare la traccia in diversi modi.

Screenshot di WinScope
Figura 1. Analisi di una traccia in WinScope
  • Linea temporale : mostra la sequenza di eventi nella traccia. Utilizzare i tasti freccia o fare clic su ciascuna voce per navigare attraverso la sequenza temporale.
  • Schermo : fornisce una rappresentazione visiva di ogni finestra visibile sullo schermo. Fare clic su una finestra per selezionare la finestra di origine nella gerarchia.
  • Gerarchia : rappresenta ogni finestra nota al sistema. Alcune finestre non contengono buffer, ma esistono per impostare criteri sui figli della finestra. Le finestre visibili sono contrassegnate dall'icona V
  • Proprietà : mostra le informazioni sullo stato per la voce selezionata nella gerarchia.