Ejecuta Winscope

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:

  1. Descarga el código fuente de Android.
  2. Navega a la carpeta Winscope:

    cd development/tools/winscope
    
  3. Instala las dependencias con lo siguiente:

    npm install
    

    Para ver una lista de los comandos disponibles, ejecuta lo siguiente: npm run

  4. Compila todos los destinos de producción y de prueba con lo siguiente:

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

  1. Compila :framework-minus-apex-intdefs para que se ejecute el preprocesador de anotaciones:

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

      1. Asegúrate de abrir el registro en la versión correcta de Winscope (principal, S o R).
      2. 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.