Ejecuta Winscope

El registro de Winscope forma parte del framework de Android. En esta página, se describen los pasos necesarios para descargar, compilar y ejecutar el visualizador de registros de Winscope de forma local.

Compila Winscope de forma local

Sigue estos pasos para configurar tu PC y ejecutar el registrador 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 el siguiente comando:

    npm install
    

    Para ver una lista de los comandos disponibles, ejecuta npm run.

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

    npm run build:prod
    
  5. Ejecuta Winscope con el siguiente comando:

    npm run start
    

Construye partes separadas

Puedes compilar partes individuales de Winscope por separado con los siguientes comandos:

Comando Descripción
build:trace_processor Verifica 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 gancho de confirmación previa.
test:unit:dev Ejecuta las pruebas de unidades en un formato más detallado para el desarrollo local.
Este modo supervisa los cambios y
vuelve a ejecutar automáticamente las pruebas correctas.
test:e2e Ejecuta las pruebas de extremo a extremo, como las del protocolo entre herramientas
.
test:presubmit:quiet Compila todas las pruebas de unidades previas al envío, los verificadores de código y el análisis de gráficos
en un formato menos detallado para el gancho de CI o previo al envío
.
test:presubmit Compila todas las pruebas de unidades previas al envío, los verificadores de código y el análisis de
en un formato más detallado para el desarrollo
local.
test:all Ejecuta todas las pruebas (de unidades y de extremo a extremo), los verificadores de código y el análisis de gráficos de
en un formato más detallado para el desarrollo local de
.

Pruebas de extremo a extremo

Antes de ejecutar pruebas de extremo a extremo, debes iniciar la herramienta remota y, luego, instalar la versión correcta del controlador de Chrome. En el siguiente fragmento de código, el comando run test:e2e instala automáticamente el controlador de Chrome.

$ npm run start
$ npm run start:remote_tool_mock
$ npm run test:e2e

En la siguiente tabla, se enumeran los comandos necesarios y sus descripciones. Para ejecutarlos, usa npm run command:

Comando Descripción
start:remote_tool_mock Inicia la simulación de la herramienta remota para probar el protocolo entre herramientas.
install:chromedriver Instala el controlador de Chrome necesario para ejecutar pruebas de extremo a extremo.

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 capacidades, 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 del 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 del 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 del 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 registro se creó con una nueva definición de .proto que contiene campos obligatorios nuevos.

      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 archivo .proto, vuelve a compilar los archivos .proto en Winscope con npm run build:protos.

  • Algunas versiones de dependencias instaladas son incorrectas (falla la compilación)

    • 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 se muestra?

    • Winscope usa las definiciones de .proto del momento en que se compiló, por lo que los campos nuevos no aparecerán de forma predeterminada. Para mostrar los campos nuevos, vuelve a compilar los protos con npm run build:protos.