Transiciones de ventana de seguimiento

WinScope proporciona la infraestructura y las herramientas para registrar y analizar los estados de WindowManager y SurfaceFlinger durante y después de las transiciones de ventanas. WinScope registra todos los estados de servicio del sistema pertinentes en un archivo de seguimiento, que puede utilizar para reproducir y recorrer las transiciones.

Capturar rastros

Capture seguimientos a través de Configuración rápida o adb en dispositivos que ejecutan userdebug o eng builds.

Ajustes rápidos

Para capturar rastros desde Configuración rápida :

  1. Habilitar opciones de desarrollador .
  2. Vaya a Opciones de desarrollador > Mosaicos de desarrollador de configuración rápida .
  3. Habilite el seguimiento de WinScope .
  4. Abra Configuración rápida .
  5. Toque Winscope Trace para habilitar el seguimiento.
  6. Ejecute transiciones de ventanas en el dispositivo.
  7. Una vez que haya terminado, abra Configuración rápida y toque Winscope Trace para desactivar el seguimiento.

Los seguimientos se escriben en /data/misc/wmtrace/wm_trace.winscope y /data/misc/wmtrace/layers_trace.winscope . Los seguimientos también se incluyen en los informes de errores.

adb

Al capturar seguimientos a través de adb , capture los seguimientos de WindowManager y SurfaceFlinger por separado.

Seguimientos de WindowManager

Para capturar rastros de WindowManager:

  1. Habilitar seguimiento:
    adb shell cmd window tracing start
  2. Deshabilitar seguimiento:
    adb shell cmd window tracing stop
  3. Tome el archivo de seguimiento:
    adb pull /data/misc/wmtrace/wm_trace.winscope wm_trace.winscope

Opcionalmente, puede cambiar la configuración de registro predeterminada de varias configuraciones para los seguimientos de WindowManager:

  • Establezca la frecuencia de registro (para la transacción o marco):
    adb shell cmd window tracing [frame | transaction]
  • Configure el nivel detallado para las entradas de registro:
    adb shell cmd window tracing level [all | trim | critical]
  • Establezca el tamaño máximo del búfer (en KB):
    adb shell cmd window tracing size size-value
  • Vuelque el estado del búfer, el nivel de registro, la capacidad restante y la cantidad de elementos:
    adb shell cmd window tracing status

Rastros de SurfaceFlinger

Para capturar rastros de SurfaceFlinger:

  1. Habilitar seguimiento:
    adb shell su root service call SurfaceFlinger 1025 i32 1
  2. Deshabilitar seguimiento:
    adb shell su root service call SurfaceFlinger 1025 i32 0
  3. Tome el archivo de seguimiento:
    adb pull /data/misc/wmtrace/layers_trace.winscope layers_trace.winscope

Opcionalmente, puede cambiar la configuración de registro predeterminada de varias configuraciones para los seguimientos de SurfaceFlinger:

  • Establezca el tamaño máximo del búfer (en KB):
    adb shell su root service call SurfaceFlinger 1029 i32 size-value
  • Configure el nivel detallado para las entradas de registro:
    adb shell su root service call SurfaceFlinger 1033 i32 flags

Actas

Para capturar transacciones:

  1. Habilitar seguimiento:
    adb shell su root service call SurfaceFlinger 1020 i32 1
  2. Deshabilitar seguimiento:
    adb shell su root service call SurfaceFlinger 1020 i32 0
  3. Tome el archivo de seguimiento:
    adb pull /data/misc/wmtrace/transaction_trace.winscope

Hay más archivos de combinación de transacciones disponibles en `/data/misc/wmtrace/` con el nombre `transaction_merges_*.winscope`.

Generar volcados de estado

WinScope lee una instantánea de los estados de WindowManager y SurfaceFlinger de los informes de errores. Los informes de errores almacenan los estados como archivos proto separados dentro de la carpeta proto . Para generar los volcados de estado usando adb , ejecute los siguientes comandos.

Administrador de ventanas

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

SuperficieFlinger

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

Analizar rastros

Para analizar un archivo de seguimiento, utilice la aplicación web WinScope. Compile la aplicación desde el código fuente o ábrala desde el directorio prediseñado.

  1. Descargue artefactos prediseñados desde el repositorio de código fuente de Android:
    curl 'https://android.googlesource.com/platform/prebuilts/misc/+/main/common/winscope/winscope.html?format=TEXT' | base64 -d > winscope.html
  2. Abra los artefactos descargados en un navegador web.
  3. Después de que se abra WinScope, seleccione ABRIR ARCHIVO para cargar un archivo de seguimiento.

Utilice WinScope

Después de abrir un archivo de seguimiento en WinScope, puede analizar el seguimiento de varias maneras.

Captura de pantalla de WinScope
Figura 1. Analizando un seguimiento en WinScope
  • Línea de tiempo : muestra la secuencia de eventos en el seguimiento. Utilice las teclas de flecha o haga clic en cada entrada para navegar por la línea de tiempo.
  • Pantalla : proporciona una representación visual de cada ventana visible en la pantalla. Haga clic en una ventana para seleccionar la ventana de origen en la jerarquía.
  • Grabación de pantalla : muestra la pantalla del dispositivo sincronizada con el seguimiento. Navega junto con la línea de tiempo.
  • Jerarquía : representa cada ventana conocida por el sistema. Algunas ventanas no contienen buffers, pero existen para establecer políticas en las ventanas secundarias. Las ventanas visibles están marcadas con el icono V
  • Propiedades : muestra información de estado de la entrada seleccionada en la jerarquía.