Il monitoraggio Winscope fa parte del framework Android. Questa pagina illustra i passaggi necessari per scaricare, compilare ed eseguire il visualizzatore di tracce Winscope localmente.
Creare Winscope localmente
Per configurare il PC in modo da eseguire il tracker Winscope:
- Scarica il codice sorgente 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
Crea parti separate
Puoi creare le singole parti di Winscope separatamente utilizzando i seguenti comandi:
Comando | Descrizione |
---|---|
build:trace_processor |
Esegue il check-out e la ricostruzione dell'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 di unità in un formato meno dettagliato per il controllo integrato o l'hook presubmit. |
test:unit:dev |
Esegue i test di unità in un formato più dettagliato per lo sviluppo locale. Questa modalità rileva 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 |
Compila tutti i test di unità, i lint e l'analisi dei grafici pre-invio in un formato meno dettagliato per la CI o l'hook pre-invio. |
test:presubmit |
Genera tutti i test di unità, i linters e l'analisi di grafici pre-invio in un formato più dettagliato per lo sviluppo locale. |
test:all |
Esegue tutti i test (unitari ed end-to-end), i linters e l'analisi del grafo in un formato più dettagliato per lo sviluppo locale. |
Aggiorna la mappatura @IntDef
@IntDef
è un'annotazione utilizzata in Android per limitare i possibili valori di un
intero. Winscope utilizza una mappatura di queste annotazioni per visualizzare il nome del valore anziché l'intero.
Per aggiornare la mappatura @IntDef
:
Esegui la compilazione di
:framework-minus-apex-intdefs
per l'esecuzione del pre-processore delle annotazioni:mp :framework-minus-apex-intdefs
Copia il file
intDefMapping.json
generato nel repository prebuilt:$ 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 alla compilazione e ai test, gli script di Winscope contengono altre funzionalità, come mostrato nella tabella. Per eseguirli, utilizza npm run command
:
Comando | Descrizione |
---|---|
format:check |
Controlla 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 |
Controlla 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 |
Controlla 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 le dipendenze cicliche. |
Risoluzione dei problemi
Utilizza i seguenti suggerimenti per la risoluzione dei problemi:
Errore
ProtocolError: missing required '<FIELD>'
oTypeError: Cannot read property '<PROP>' of null
Questo accade quando il file di traccia è stato creato con una nuova definizione di 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 sono errate (la compilazione non va a buon fine)
- 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 dal momento in cui è stato compilato, pertanto i nuovi campi non vengono visualizzati per impostazione predefinita. Per mostrare nuovi campi, ricostruisci i protos
utilizzando
npm run build:protos
.
- Winscope utilizza le definizioni proto dal momento in cui è stato compilato, pertanto i nuovi campi non vengono visualizzati per impostazione predefinita. Per mostrare nuovi campi, ricostruisci i protos
utilizzando