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:
- Descarga el código fuente de Android.
Navega a la carpeta Winscope:
cd development/tools/winscope
Instala las dependencias con lo siguiente:
npm install
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 previas al envío, los linters y el análisis de grafos en un formato menos detallado para CI o el hook previo al envío. |
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 gráficos 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:$ 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
Sube los cambios en Winscope con
repo upload
.
Otros comandos
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>'
oTypeError: 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
ypackage-lock.json
. Quitanode_modules
. Vuelve a ejecutarnpm install
.
- Revierte los cambios en
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
.
- 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