Herramienta Validar mapas de teclas

El marco de trabajo de Android tiene una pequeña herramienta llamada validatekeymaps para validar la sintaxis de los archivos de configuración de dispositivos de entrada, archivos de diseño de teclas, archivos de mapas de caracteres clave y archivos de definición de teclas virtuales.

Compilacion

Para compilar validatekeymaps , configure el entorno de desarrollo, descargue el árbol fuente de Android, compílelo y luego ejecute:

mmm frameworks/base/tools/validatekeymaps

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

Uso

Si ejecutó envsetup.sh para configurar su entorno de desarrollo, entonces la herramienta de validatekeymaps mapas clave ya debería estar en su camino. Puede verificar esto ejecutando validatekeymaps .

validatekeymaps

Debería ver 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, todo lo que necesita hacer es ejecutar validatekeymaps y darle la ruta 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 una muy buena idea ejecutar validatekeymaps mapas de teclas en todos los archivos de configuración antes de instalarlos en un dispositivo.

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

El siguiente archivo MAKE 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)