Google is committed to advancing racial equity for Black communities. See how.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Rastreo de transiciones de ventana

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 ventana. WinScope registra todos los estados de servicio del sistema pertinentes en un archivo de rastreo, que puede usar para reproducir y recorrer las transiciones.

Capturando rastros

Capture rastros a través de la Configuración rápida o adb en dispositivos que ejecutan construcciones de depuración de usuario o eng.

Ajustes rápidos

Para capturar trazas desde la Configuración rápida :

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

Las trazas se escriben en /data/misc/wmtrace/wm_trace.pb y /data/misc/wmtrace/layers_trace.pb . Los rastros también se incluyen en los informes de errores.

adb

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

Rastros de WindowManager

Para capturar trazas de WindowManager:

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

Opcionalmente, puede cambiar la configuración de registro predeterminada de varias configuraciones para las trazas 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 
  • Volcar el estado del búfer, el nivel de registro, la capacidad restante y el número de elementos:
    adb shell cmd window tracing status

Rastros de SurfaceFlinger

Para capturar trazas de SurfaceFlinger:

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

Opcionalmente, puede cambiar la configuración de registro predeterminada de varias configuraciones para las trazas 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 

Generando 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 utilizando adb , ejecute los siguientes comandos.

WindowManager

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

SurfaceFlinger

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

Analizando trazas

Para analizar un archivo de rastreo, use la aplicación web WinScope. Cree la lata de la aplicación desde el origen o ábrala desde el directorio preconstruido.

  1. Descargue los artefactos precompilados del repositorio de origen de Android:
    curl 'https://android.googlesource.com/platform/prebuilts/misc/+/master/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 rastreo.

Usando 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 rastro en WinScope
  • Línea de tiempo : muestra la secuencia de eventos en la traza. Use 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.
  • Jerarquía : representa cada ventana conocida por el sistema. Algunas ventanas no contienen buffers, pero existen para establecer políticas en los hijos de la ventana. Las ventanas visibles están marcadas con el ícono V
  • Propiedades : muestra información de estado para la entrada seleccionada en la jerarquía.