La traccia Winscope fa parte del framework Android. Questa pagina descrive i passaggi necessari per scaricare, compilare ed eseguire localmente il visualizzatore di tracce Winscope.
Crea Winscope localmente
Per configurare il PC per l'esecuzione di Winscope Tracer:
- Scarica l'origine di Android.
- Vai alla cartella Winscope: - cd development/tools/winscope
- Installa le dipendenze utilizzando: - npm install- Per visualizzare un elenco dei comandi disponibili, esegui: - npm run
- Crea tutti i target di produzione e di test utilizzando: - npm run build:prod
- Esegui Winscope utilizzando: - npm run start
Creare parti separate
Puoi creare singole parti di Winscope separatamente utilizzando i seguenti comandi:
| Comando | Descrizione | 
|---|---|
| build:trace_processor | Estrae e ricompila l'ultima versione di trace_processordi Perfetto. | 
| build:protos | Ricompila le definizioni proto. | 
Esegui test
Winscope contiene test unitari ed end-to-end. Per eseguirli, utilizza npm run
<command>:
| Comando | Descrizione | 
|---|---|
| test:unit:ci | Esegue i test unitari in un formato meno dettagliato per CI o per l'hook di pre-invio. | 
| test:unit:dev | Esegue i test delle unità in un formato più dettagliato per lo sviluppo locale. Questa modalità monitora le modifiche e riesegue automaticamente i test corretti. | 
| test:e2e | Esegue i test end-to-end, ad esempio quelli per il protocollo cross-tool. | 
| test:presubmit:quiet | Crea tutti i test unitari pre-invio, i linter e l'analisi del grafico in un formato meno dettagliato per CI o hook pre-invio. | 
| test:presubmit | Crea tutti i test unitari pre-invio, i linter e l'analisi del grafico in un formato più dettagliato per lo sviluppo locale. | 
| test:all | Esegue tutti i test (unità e end-to-end), i linter e l'analisi del grafico in un formato più dettagliato per lo sviluppo locale. | 
Test end-to-end
Prima di eseguire i test end-to-end, devi avviare lo strumento remoto e installare la
versione corretta del driver Chrome. Nel seguente snippet di codice, il comando
run test:e2e installa automaticamente il driver di Chrome.
$ npm run start
$ npm run start:remote_tool_mock
$ npm run test:e2e
La tabella seguente elenca i comandi necessari e le relative descrizioni. Per eseguirli,
utilizza npm run command:
| Comando | Descrizione | 
|---|---|
| start:remote_tool_mock | Avvia la simulazione dello strumento remoto per testare il protocollo tra strumenti. | 
| install:chromedriver | Installa il driver di Chrome necessario per eseguire test end-to-end. | 
Aggiorna la mappatura @IntDef
@IntDef è un'annotazione utilizzata in Android per limitare i possibili valori di un
numero intero. Winscope utilizza una mappatura di queste annotazioni per visualizzare il nome del
valore anziché l'intero.
Per aggiornare il mapping di @IntDef:
- Crea - :framework-minus-apex-intdefsper l'esecuzione del preprocessor delle annotazioni:- mp :framework-minus-apex-intdefs
- Copia il file - intDefMapping.jsongenerato nel repository precompilati:- $ 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
- Carica le modifiche in Winscope utilizzando - repo upload.
Altri comandi
Oltre a build e test, gli script Winscope contengono altre funzionalità, come
mostrato nella tabella. Per eseguirli, utilizza npm run command:
| Comando | Descrizione | 
|---|---|
| format:check | Verifica la presenza di problemi di formattazione del codice utilizzando prettier. | 
| format:fix | Controlla e corregge automaticamente i problemi di formattazione del codice utilizzando prettier. | 
| eslint:check | Verifica la presenza di problemi di formattazione del codice utilizzando eslint. | 
| eslint:fix | Controlla e corregge automaticamente i problemi di formattazione del codice utilizzando eslint. | 
| tslint:check | Verifica la presenza di problemi di formattazione del codice utilizzando tslint. | 
| tslint:fix | Controlla e corregge automaticamente i problemi di formattazione del codice utilizzando tslint. | 
| deps_graph:check_cycles | Analizza il codice per rilevare dipendenze cicliche. | 
Risoluzione dei problemi
Per la risoluzione dei problemi, segui questi suggerimenti:
- Errore - ProtocolError: missing required '<FIELD>'o- TypeError: Cannot read property '<PROP>' of null- Ciò si verifica quando il file di traccia è stato creato con una nuova definizione proto, contenente nuovi campi obbligatori. - Assicurati di aprire la traccia nella versione corretta di Winscope (master, S o R).
- Se crei il nuovo campo nel proto, ricompila i proto in Winscope utilizzando - npm run build:protos.
 
 
- Alcune versioni delle dipendenze installate non sono corrette (la build non riesce) - Ripristina le modifiche a package.jsonepackage-lock.json. Rimuovinode_modules. Esegui di nuovonpm install.
 
- Ripristina le modifiche a 
- Ho aggiunto un nuovo campo a uno dei file proto. Come faccio a visualizzarlo? - Winscope utilizza le definizioni proto del momento della compilazione, quindi i nuovi
campi non vengono visualizzati per impostazione predefinita. Per visualizzare i nuovi campi, ricompila i proto
utilizzando npm run build:protos.
 
- Winscope utilizza le definizioni proto del momento della compilazione, quindi i nuovi
campi non vengono visualizzati per impostazione predefinita. Per visualizzare i nuovi campi, ricompila i proto
utilizzando 
