Esegui Winscope

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:

  1. Scarica l'origine Android.
  2. Vai alla cartella Winscope:

    cd development/tools/winscope
    
  3. Installa le dipendenze utilizzando:

    npm install
    

    Per visualizzare un elenco dei comandi disponibili, esegui: npm run

  4. Crea tutti i target di produzione e di test utilizzando:

    npm run build:prod
    
  5. 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_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:

  1. Crea :framework-minus-apex-intdefs per l'esecuzione del preprocessor delle annotazioni:

    mp :framework-minus-apex-intdefs
    
  2. 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
    
  3. 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.

      1. Assicurati di aprire la traccia nella versione corretta di Winscope (master, S o R).
      2. 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 e package-lock.json. Rimuovi node_modules. Esegui di nuovo npm install.
  • 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.