herramienta validatekeymaps

El framework de Android tiene una pequeña herramienta llamada validatekeymaps para validar la sintaxis de los archivos de configuración del dispositivo de entrada, archivos de diseño de claves, caracteres clave de mapas y archivos de definición de claves virtuales.

Compilación

Para compilar validatekeymaps, configura el entorno de desarrollo y descarga compílalo y ejecuta el comando siguiente:

mmm frameworks/base/tools/validatekeymaps

Este comando debe compilar una herramienta de host llamada validatekeymaps en la out/host/<os>/bin.

Uso

Si ejecutaste envsetup.sh para configurar tu entorno de desarrollo, la La herramienta validatekeymaps ya debería estar en tu ruta. Puedes verificar ejecutando validatekeymaps.

validatekeymaps

Debería verse el siguiente resultado:

Keymap Validation Tool

Usage:
 validatekeymaps [*.kl] [*.kcm] [*.idc] [virtualkeys.*] [...]
   Validates the specified key layouts, key character maps, 
   input device configurations, or virtual key definitions.

Luego, lo único que debes hacer es ejecutar validatekeymaps y asignarle la ruta de acceso de uno o más archivos para validar.

validatekeymaps frameworks/base/data/keyboards/Generic.kl

Ejemplo:

Validating file 'frameworks/base/data/keyboards/Generic.kl'...
No errors.

Success.

Y si hay un error...

validatekeymaps Bad.kl

Ejemplo:

Validating file 'Bad.kl'...
E/KeyLayoutMap(87688): Bad.kl:24: Expected keyword, got 'ke'.
Error -22 parsing key layout file.

Failed!

Automatización

Es muy buena idea ejecutar validatekeymaps en todos los archivos de configuración antes de instalarlas en un dispositivo.

El proceso se puede automatizar fácilmente como parte del sistema de compilación usando un o un archivo makefile.

El siguiente archivo makefile de muestra se basa en el contenido de frameworks/base/data/keyboards/Android.mk

# This makefile performs build time validation of framework keymap files.

LOCAL_PATH := $(call my-dir)

# Validate all key maps.
include $(CLEAR_VARS)

validatekeymaps := $(HOST_OUT_EXECUTABLES)/validatekeymaps$(HOST_EXECUTABLE_SUFFIX)
files := MyKeyboard.kl MyKeyboard.kcm MyTouchScreen.idc

LOCAL_MODULE := validate_framework_keymaps
LOCAL_MODULE_TAGS := optional
LOCAL_REQUIRED_MODULES := validatekeymaps

validate_framework_keymaps: $(files)
    $(hide) $(validatekeymaps) $(files)

include $(BUILD_PHONY_PACKAGE)