Esegui Winscope

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:

  1. Scarica il codice sorgente di 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
    

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 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 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:

  1. Esegui la compilazione di :framework-minus-apex-intdefs per l'esecuzione del pre-processore delle annotazioni:

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

      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 sono errate (la compilazione non va a buon fine)

    • 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 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.