WinScope fornece a infraestrutura e ferramentas para registrar e analisar os estados do WindowManager e do SurfaceFlinger durante e após as transições das janelas. 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.
Capturar rastros
Capture rastreamentos por meio de configurações rápidas ou adb
em dispositivos que executam userdebug ou eng builds.
Configurações rápidas
Para capturar rastros das configurações rápidas :
- Ative as opções do desenvolvedor .
- Vá para Opções do desenvolvedor > Blocos de desenvolvedor de configurações rápidas .
- Ative o rastreamento do WinScope .
- Abra Configurações rápidas .
- Toque em Winscope Trace para ativar o rastreamento.
- Execute transições de janela no dispositivo.
- Depois de terminar, abra Configurações rápidas e toque em Winscope Trace para desativar o rastreamento.
Os rastreamentos são gravados em /data/misc/wmtrace/wm_trace.winscope
e /data/misc/wmtrace/layers_trace.winscope
. Os rastreamentos também são incluídos em relatórios de bugs.
adb
Ao capturar rastreamentos por meio adb
, capture os rastreamentos WindowManager e SurfaceFlinger separadamente.
Rastreamentos do WindowManager
Para capturar rastros do WindowManager:
- Habilitar rastreamento:
adb shell cmd window tracing start
- Desativar rastreamento:
adb shell cmd window tracing stop
- Pegue o arquivo de rastreamento:
adb pull /data/misc/wmtrace/wm_trace.winscope wm_trace.winscope
Opcionalmente, você pode alterar a configuração de log padrão de várias configurações para rastreamentos do WindowManager:
- Defina a frequência do log (para a transação ou quadro):
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
- Despeja o status do buffer, nível de log, capacidade restante e número de elementos:
adb shell cmd window tracing status
Rastros do SurfaceFlinger
Para capturar rastreamentos do SurfaceFlinger:
- Habilitar rastreamento:
adb shell su root service call SurfaceFlinger 1025 i32 1
- Desativar rastreamento:
adb shell su root service call SurfaceFlinger 1025 i32 0
- Pegue o arquivo de rastreamento:
adb pull /data/misc/wmtrace/layers_trace.winscope layers_trace.winscope
Opcionalmente, você pode alterar a configuração de log padrão de várias configurações para rastreamentos 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
Transações
Para capturar transações:
- Habilitar rastreamento:
adb shell su root service call SurfaceFlinger 1020 i32 1
- Desativar rastreamento:
adb shell su root service call SurfaceFlinger 1020 i32 0
- Pegue o arquivo de rastreamento:
adb pull /data/misc/wmtrace/transaction_trace.winscope
Mais arquivos de mesclagem de transações estão disponíveis em `/data/misc/wmtrace/` com a nomenclatura `transaction_merges_*.winscope`.
Gerar dumps de estado
WinScope lê um instantâneo dos estados WindowManager e SurfaceFlinger de relatórios de bugs. Os relatórios de erros armazenam os estados como arquivos proto separados dentro da pasta proto
. Para gerar dumps de estado usando adb
, execute os comandos a seguir.
Gerenciador de janelas
adb exec-out dumpsys window --proto > window_dump.winscope
SurfaceFlinger
adb exec-out dumpsys SurfaceFlinger --proto > sf_dump.winscope
Analisar rastros
Para analisar um arquivo de rastreamento, use o aplicativo web WinScope. Crie o aplicativo a partir do código-fonte ou abra-o no diretório pré-construído.
- Baixe artefatos pré-construídos do repositório de origem do Android:
curl 'https://android.googlesource.com/platform/prebuilts/misc/+/main/common/winscope/winscope.html?format=TEXT' | base64 -d > winscope.html
- Abra os artefatos baixados em um navegador da web.
- Após a abertura do WinScope, selecione OPEN FILE para carregar um arquivo de rastreamento.
Utilize o WinScope
Depois de abrir um arquivo de rastreamento no WinScope, você pode analisar o rastreamento de diversas maneiras.
- 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 cada janela visível na tela. Clique em uma janela para selecionar a janela de origem na hierarquia.
- Gravação de tela — Mostra a tela do dispositivo sincronizada com o traçado. Navega junto com a linha do tempo.
- Hierarquia — Representa cada janela conhecida pelo sistema. Algumas janelas não contêm buffers, mas existem para definir políticas nos filhos da janela. As janelas visíveis são marcadas com o ícone
V
- Propriedades — Mostra informações de estado da entrada selecionada na hierarquia.