Google is committed to advancing racial equity for Black communities. See how.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Rastreando transições de janela

O WinScope fornece a infraestrutura e as ferramentas para registrar e analisar os estados WindowManager e SurfaceFlinger durante e após as transições da janela. O WinScope registra todos os estados de serviço do sistema pertinentes em um arquivo de rastreamento, que você pode usar para reproduzir e percorrer as transições.

Capturando traços

Capture rastreamentos por meio das Configurações rápidas ou adb em dispositivos executando builds de depuração ou eng do usuário.

Configurações rápidas

Para capturar traços nas Configurações rápidas :

  1. Ative as opções do desenvolvedor .
  2. Vá para Opções do desenvolvedor > Ladrilhos do desenvolvedor de configurações rápidas .
  3. Habilite o rastreamento do WinScope .
  4. Abra Configurações rápidas .
  5. Toque em Rastreamento do Winscope para ativar o rastreamento.
  6. Execute transições de janela no dispositivo.
  7. Depois de terminar, abra as Configurações rápidas e toque em Rastreamento do Winscope para desativar o rastreamento.

Os /data/misc/wmtrace/wm_trace.pb são gravados em /data/misc/wmtrace/wm_trace.pb e /data/misc/wmtrace/layers_trace.pb . Traços também estão incluídos nos relatórios de erros.

adb

Ao capturar traços através do adb , capture os traços WindowManager e SurfaceFlinger separadamente.

Rastreios do WindowManager

Para capturar traços do WindowManager:

  1. Ativar rastreamento:
    adb shell cmd window tracing start
  2. Desativar rastreamento:
    adb shell cmd window tracing stop
  3. Pegue o arquivo de rastreamento:
    adb pull /data/misc/wmtrace/wm_trace.pb wm_trace.pb

Opcionalmente, você pode alterar a configuração de log padrão de várias configurações para os rastreamentos do WindowManager:

  • Defina a frequência do log (para a transação ou estrutura):
    adb shell cmd window tracing [ frame  |  transaction ]
  • Configure o nível detalhado para entradas de log:
    adb shell cmd window tracing level [ all  |  trim  |  critical ]
  • Defina o tamanho máximo do buffer (em KB):
    adb shell cmd window tracing size size-value 
  • Despejar o status do buffer, o nível do log, a capacidade restante e o número de elementos:
    adb shell cmd window tracing status

Rastreios do SurfaceFlinger

Para capturar traços do SurfaceFlinger:

  1. Ativar rastreamento:
    adb shell su root service call SurfaceFlinger 1025 i32 1
  2. Desativar rastreamento:
    adb shell su root service call SurfaceFlinger 1025 i32 0
  3. Pegue o arquivo de rastreamento:
    adb pull /data/misc/wmtrace/layers_trace.pb layers_trace.pb

Opcionalmente, você pode alterar a configuração de log padrão de várias configurações para rastreios do SurfaceFlinger:

  • Defina o tamanho máximo do buffer (em KB):
    adb shell su root service call SurfaceFlinger 1029 i32 size-value 
  • Configure o nível detalhado para entradas de log:
    adb shell su root service call SurfaceFlinger 1033 i32 flags 

Gerando Despejos de Estado

O WinScope lê um instantâneo dos estados WindowManager e SurfaceFlinger a partir de relatórios de erros. Os relatórios de erros armazenam os estados como arquivos proto separados dentro da pasta proto . Para gerar os despejos de estado usando adb , execute os seguintes comandos.

WindowManager

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

SurfaceFlinger

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

Analisando traços

Para analisar um arquivo de rastreamento, use o aplicativo da web WinScope. Crie a lata do aplicativo a partir da fonte ou abra-a no diretório pré-construído.

  1. Faça o download dos artefatos pré-criados no repositório de origem Android:
    curl 'https://android.googlesource.com/platform/prebuilts/misc/+/master/common/winscope/winscope.html?format=TEXT' | base64 -d > winscope.html
  2. Abra os artefatos baixados em um navegador da web.
  3. Depois que o WinScope for aberto, selecione OPEN FILE para carregar um arquivo de rastreamento.

Usando o WinScope

Depois de abrir um arquivo de rastreamento no WinScope, você pode analisar o rastreamento de várias maneiras.

Captura de tela do WinScope
Figura 1. Analisando um rastreamento no WinScope
  • Linha do tempo - mostra a sequência de eventos no rastreamento. Use as teclas de seta ou clique em cada entrada para navegar pela linha do tempo.
  • Tela - fornece uma representação visual de todas as janelas visíveis na tela. Clique em uma janela para selecionar a janela de origem na hierarquia.
  • Hierarquia - Representa cada janela conhecida pelo sistema. Algumas janelas não contêm buffers, mas existem para definir políticas nos filhos da janela. Janelas visíveis são marcadas com o ícone V
  • Propriedades - mostra informações de estado para a entrada selecionada na hierarquia.