O rastreamento do Winscope faz parte do framework do Android. Esta página descreve as etapas necessárias para fazer o download, criar e executar o visualizador de rastros do Winscope localmente.
Criar o Winscope localmente
Siga estas etapas para configurar o PC para executar o rastreador do Winscope:
- Faça o download da origem do Android.
Navegue até a pasta do Winscope:
cd development/tools/winscope
Instale as dependências usando:
npm install
Para conferir uma lista dos comandos disponíveis, execute:
npm run
Crie todos os destinos de produção e teste usando:
npm run build:prod
Execute o Winscope usando:
npm run start
Criar partes separadas
É possível criar partes individuais do Winscope separadamente usando os seguintes comandos:
Comando | Descrição |
---|---|
build:trace_processor |
Verifica e recria a versão mais recente do do trace_processor do Perfetto. |
build:protos |
Recompila as definições de proto. |
Executar testes
O Winscope contém testes de unidade e completos. Para executá-los, use npm run
<command>
:
Comando | Descrição |
---|---|
test:unit:ci |
Executa os testes de unidade em um formato menos detalhado para CI ou gancho de pré-envio. |
test:unit:dev |
Executa os testes de unidade em um formato mais detalhado para o desenvolvimento
local de . Esse modo procura mudanças e reexecuta automaticamente os testes corretos. |
test:e2e |
Executa os testes completos, como os do protocolo
cross-tool . |
test:presubmit:quiet |
Cria todos os testes de unidade pré-envio, linters e análises de graph em um formato menos detalhado para CI ou gancho pré-envio . |
test:presubmit |
Cria todos os testes de unidade pré-envio, linters e análise de gráfico em um formato mais detalhado para desenvolvimento local. |
test:all |
Executa todos os testes (de unidade e completos), linters e análise de gráfico em um formato mais detalhado para o desenvolvimento local. |
Atualizar o mapeamento @IntDef
@IntDef
é uma anotação usada no Android para restringir os valores possíveis de um
número inteiro. O Winscope usa um mapeamento dessas anotações para mostrar o nome do
valor em vez do número inteiro.
Para atualizar o mapeamento @IntDef
, faça o seguinte:
Crie
:framework-minus-apex-intdefs
para que o pré-processador de anotações seja executado:mp :framework-minus-apex-intdefs
Copie o arquivo
intDefMapping.json
gerado para o repositório de pré-criados:$ python3 -c 'import sys,json,collections; print(json.dumps(collections.OrderedDict(sorted(collections.ChainMap(*map(lambda x:json.load(open(x)), sys.argv[1:])).items())), indent=2))' $(find out/soong/.intermediates/frameworks/base -iname intDefMapping.json) > ./development/tools/winscope/src/common/intDefMapping.json
Faça upload das mudanças no Winscope usando
repo upload
.
Outros comandos
Além de build e testes, os scripts do Winscope contêm outros recursos, conforme
mostrado na tabela. Para executar, use npm run command
:
Comando | Descrição |
---|---|
format:check |
Verifica problemas de formatação de código usando prettier . |
format:fix |
Verifica e corrige automaticamente problemas de formatação do código usando prettier . |
eslint:check |
Verifica problemas de formatação de código usando eslint . |
eslint:fix |
Verifica e corrige automaticamente problemas de formatação do código usando eslint . |
tslint:check |
Verifica problemas de formatação de código usando tslint . |
tslint:fix |
Verifica e corrige automaticamente problemas de formatação do código usando tslint . |
deps_graph:check_cycles |
Analisa o código em busca de dependências cíclicas. |
Resolver problemas
Use as dicas a seguir para resolver problemas:
Erro
ProtocolError: missing required '<FIELD>'
ouTypeError: Cannot read property '<PROP>' of null
Isso ocorre quando o arquivo de rastreamento foi criado com uma nova definição de proto, que contém novos campos obrigatórios.
- Verifique se você está abrindo o rastro na versão correta do Winscope (master, S ou R).
Se você criar o novo campo no proto, recompila os protos no Winscope usando
npm run build:protos
.
Algumas versões de dependências instaladas estão incorretas (falha na criação)
- Reverta as alterações para
package.json
epackage-lock.json
. Removanode_modules
. Executenpm install
novamente.
- Reverta as alterações para
Adicionei um novo campo a um dos arquivos proto. Como faço para mostrar isso?
- O Winscope usa as definições de proto de quando foi compilado, então novos
campos não aparecem por padrão. Para mostrar novos campos, reconstrua os protos
usando
npm run build:protos
.
- O Winscope usa as definições de proto de quando foi compilado, então novos
campos não aparecem por padrão. Para mostrar novos campos, reconstrua os protos
usando