A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release en lugar de aosp-main para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
El seguimiento de Winscope forma parte del framework de Android. En esta página, se describen los pasos necesarios para descargar, compilar y ejecutar el visor de seguimiento de Winscope de forma local.
Compila Winscope de forma local
Sigue estos pasos para configurar tu PC para ejecutar el generador de registros de Winscope:
Para ver una lista de los comandos disponibles, ejecuta lo siguiente: npm run
Compila todos los destinos de producción y de prueba con lo siguiente:
npm run build:prod
Ejecuta Winscope con lo siguiente:
npm run start
Cómo crear partes independientes
Puedes compilar partes individuales de Winscope por separado con los siguientes comandos:
Comando
Descripción
build:trace_processor
Consulta y vuelve a compilar la versión más reciente de trace_processor de
Perfetto.
build:protos
Vuelve a compilar las definiciones de proto.
Cómo ejecutar pruebas
Winscope contiene pruebas de unidades y de extremo a extremo. Para ejecutarlos, usa npm run
<command>:
Comando
Descripción
test:unit:ci
Ejecuta las pruebas de unidades en un formato menos detallado para CI
o el hook de envío previo.
test:unit:dev
Ejecuta las pruebas de unidades en un formato más detallado para el desarrollo
local. Este modo detecta cambios y
reejecuta automáticamente las pruebas correctas.
test:e2e
Ejecuta las pruebas de extremo a extremo, como las del protocolo de herramientas múltiples .
test:presubmit:quiet
Compila todas las pruebas de unidades, linters y análisis de grafos
de envío previo en un formato menos detallado para CI o el hook
de envío previo.
test:presubmit
Compila todas las pruebas de unidades previas al envío, los linters y el análisis de grafos
en un formato más detallado para el desarrollo
local.
test:all
Ejecuta todas las pruebas (de unidades y de extremo a extremo), los linters y el análisis de grafos
en un formato más detallado para el desarrollo
local.
Actualiza la asignación de @IntDef
@IntDef es una anotación que se usa en Android para restringir los valores posibles de un número entero. Winscope usa una asignación de estas anotaciones para mostrar el nombre del valor en lugar del número entero.
Para actualizar la asignación de @IntDef, haz lo siguiente:
Compila :framework-minus-apex-intdefs para que se ejecute el preprocesador de anotaciones:
mp:framework-minus-apex-intdefs
Copia el archivo intDefMapping.json generado en el repositorio de compilaciones previas:
Además de la compilación y las pruebas, las secuencias de comandos de Winscope contienen otras funciones, como se muestra en la tabla. Para ejecutarlos, usa npm run command:
Comando
Descripción
format:check
Verifica si hay problemas de formato de código con prettier.
format:fix
Verifica y corrige automáticamente los problemas de formato de código con prettier.
eslint:check
Verifica si hay problemas de formato de código con eslint.
eslint:fix
Verifica y corrige automáticamente los problemas de formato de código con eslint.
tslint:check
Verifica si hay problemas de formato de código con tslint.
tslint:fix
Verifica y corrige automáticamente los problemas de formato de código con tslint.
deps_graph:check_cycles
Analiza el código en busca de dependencias cíclicas.
Solución de problemas
Sigue estas sugerencias para solucionar problemas:
Error ProtocolError: missing required '<FIELD>' o TypeError: Cannot
read property '<PROP>' of null
Esto ocurre cuando el archivo de seguimiento se crea con una nueva definición de proto,
que contiene nuevos campos obligatorios.
Asegúrate de abrir el registro en la versión correcta de Winscope (principal, S o R).
Si creas el campo nuevo en el proto, vuelve a compilar los protos en Winscope con npm run build:protos.
Algunas versiones de dependencias instaladas son incorrectas (la compilación falla)
Revierte los cambios en package.json y package-lock.json. Quita node_modules. Vuelve a ejecutar npm install.
Agregué un campo nuevo a uno de los archivos proto. ¿Cómo puedo mostrarla?
Winscope usa las definiciones de proto desde que se compiló, por lo que los campos nuevos no aparecerán de forma predeterminada. Para mostrar campos nuevos, vuelve a compilar los protos con npm run build:protos.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-08-24 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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`."]]