A partire dal 27 marzo 2025, ti consigliamo di utilizzare android-latest-release anziché aosp-main per compilare e contribuire ad AOSP. Per ulteriori informazioni, vedi Modifiche ad AOSP.
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Il monitoraggio Winscope fa parte del framework Android. Questa pagina illustra i passaggi necessari per scaricare, compilare ed eseguire localmente il visualizzatore di tracce Winscope.
Creare Winscope localmente
Per configurare il PC in modo da eseguire il tracker Winscope:
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 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-submit in un formato meno dettagliato per la CI o l'hook pre-submit.
test:presubmit
Genera tutti i test di unità, i lint e l'analisi del grafico
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:
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
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 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.
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 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 di 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.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-08-24 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-08-24 UTC."],[],[],null,["# Run Winscope\n\nWinscope tracing is part of the Android framework. This page outlines the\nsteps required to download, build, and run the Winscope trace viewer locally.\n\nBuild Winscope locally\n----------------------\n\nFollow these steps to set up your PC to run the Winscope tracer:\n\n1. [Download the Android source](/docs/setup/build/building).\n2. Navigate to the Winscope folder:\n\n cd development/tools/winscope\n\n3. Install dependencies using:\n\n npm install\n\n To see a list of available commands, run: `npm run`\n4. Build all prod and test targets using:\n\n npm run build:prod\n\n5. Run Winscope using:\n\n npm run start\n\n| **Note:** You can also download and build Winscope to host on a standard web server to get a shareable link to the tool.\n\nBuild separate parts\n--------------------\n\nYou can build individual parts of Winscope separately using the following\ncommands:\n\n| Command | Description |\n|-------------------------|-----------------------------------------------------------------------------|\n| `build:trace_processor` | Checks out and rebuilds the latest version of Perfetto's `trace_processor`. |\n| `build:protos` | Recompiles the proto definitions. |\n\nRun tests\n---------\n\n| **Tip:** Winscope doesn't build on Soong and can't be built by Tradefed, so it's recommended to have a local Git hook to the tests in your local environment.\n\nWinscope contains unit and end-to-end tests. To run them use `npm run\n\u003ccommand\u003e`:\n\n| Command | Description |\n|------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|\n| `test:unit:ci` | Runs the unit tests in a less verbose format for CI or presubmit hook. |\n| `test:unit:dev` | Runs the unit tests in a more verbose format for local development. This mode watches for changes and automatically reruns the correct tests. |\n| `test:e2e` | Runs the end-to-end tests, such as those for the cross-tool protocol. |\n| `test:presubmit:quiet` | Builds all presubmit unit tests, linters, and graph analysis in a less verbose format for CI or presubmit hook. |\n| `test:presubmit` | Builds all presubmit unit tests, linters, and graph analysis in a more verbose format for local development. |\n| `test:all` | Runs all tests (unit and end-to-end), linters, and graph analysis in a more verbose format for local development. |\n\n### Update @IntDef mapping\n\n`@IntDef` is an annotation used in Android to restrict the possible values of an\ninteger. Winscope uses a mapping of these annotations to display the name of the\nvalue instead of the integer.\n\nTo update the `@IntDef` mapping, do the following:\n\n1. Build `:framework-minus-apex-intdefs` for the annotation preprocessor to run:\n\n mp :framework-minus-apex-intdefs\n\n2. Copy the generated `intDefMapping.json` file to the prebuilts repository:\n\n $ 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) \u003e ./development/tools/winscope/src/common/intDefMapping.json\n\n3. Upload the changes in Winscope using `repo upload`.\n\nOther commands\n--------------\n\nIn addition to build and tests, Winscope scripts contain other capabilities, as\nshown in the table. To run them use `npm run `\u003cvar translate=\"no\"\u003ecommand\u003c/var\u003e:\n\n| Command | Description |\n|---------------------------|----------------------------------------------------------------|\n| `format:check` | Checks for code formatting issues using `prettier`. |\n| `format:fix` | Checks and auto fixes code formatting issues using `prettier`. |\n| `eslint:check` | Checks for code formatting issues using `eslint`. |\n| `eslint:fix` | Checks and auto fixes code formatting issues using `eslint`. |\n| `tslint:check` | Checks for code formatting issues using `tslint`. |\n| `tslint:fix` | Checks and auto fixes code formatting issues using `tslint`. |\n| `deps_graph:check_cycles` | Analyzes the code for cyclical dependencies. |\n\nTroubleshoot\n------------\n\nUse the following tips for troubleshooting:\n\n- **Error `ProtocolError: missing required '\u003cFIELD\u003e'` or `TypeError: Cannot\n read property '\u003cPROP\u003e' of null`**\n\n - This occurs when the trace file was created with a new proto definition,\n containing new *required* fields.\n\n 1. Make sure you're opening the trace on the correct Winscope version (master, S, or R).\n 2. If you create the new field on the proto, recompile the protos in\n Winscope using `npm run build:protos`.\n\n | **Note:** You shouldn't need a new required field, because the protos should be backward compatible.\n- **Some installed dependency versions are wrong (build fails)**\n\n - Revert changes to `package.json` and `package-lock.json`. Remove `node_modules`. Run `npm install` again.\n- **I added a new field to one of the proto files. How do I display it?**\n\n - Winscope uses the proto definitions from when it was compiled, so new fields won't appear by default. To show new fields, rebuild the protos using `npm run build:protos`."]]