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:
- Descarga el código fuente de Android.
Navega a la carpeta Winscope:
cd development/tools/winscope
Instala las dependencias con el siguiente comando:
npm install
Para ver una lista de los comandos disponibles, ejecuta
npm run
.Compila todos los destinos de producción y prueba con el siguiente comando:
npm run build:prod
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:
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 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>'
oTypeError: 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.
- Asegúrate de abrir el registro en la versión correcta de Winscope (principal, S o R).
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
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 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
.
- 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