La traccia Winscope fa parte del framework Android. Questa pagina descrive i passaggi necessari per scaricare, compilare ed eseguire il visualizzatore di tracce Winscope in locale.
Crea Winscope localmente
Per configurare il PC per eseguire lo strumento di tracciamento Winscope:
- Scarica l'origine 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 ditrace_processor di 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 il presubmit hook. |
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-intdefs
per l'esecuzione del preprocessor delle annotazioni:mp :framework-minus-apex-intdefs
Copia il file
intDefMapping.json
generato 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>'
oTypeError: 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.json
epackage-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