Strumento validatekeymaps

Il framework Android dispone di un piccolo strumento chiamato validatekeymaps per convalidare la sintassi dei file di configurazione dei dispositivi di input, dei file di layout delle chiavi, dei file delle mappe dei caratteri delle chiavi e dei file di definizione delle chiavi virtuali.

Compilation

Per compilare validatekeymaps, configura l'ambiente di sviluppo, scarica la struttura di origine di Android, compilala e poi esegui:

mmm frameworks/base/tools/validatekeymaps

Questo comando dovrebbe compilare uno strumento host chiamato validatekeymaps nella directory out/host/<os>/bin.

Utilizzo

Se hai eseguito envsetup.sh per configurare il tuo ambiente di sviluppo, lo strumento validatekeymaps dovrebbe già essere nel tuo percorso. Puoi verificarlo eseguendo validatekeymaps.

validatekeymaps

Dovresti vedere il seguente output:

Keymap Validation Tool

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

A questo punto, non devi fare altro che eseguire validatekeymaps e specificare il percorso di uno o più file da convalidare.

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

Esempio:

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

Success.

E se si verifica un errore…

validatekeymaps Bad.kl

Esempio:

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

Failed!

Automazione

È molto consigliabile eseguire validatekeymaps su tutti i file di configurazione prima di installarli su un dispositivo.

Il processo può essere facilmente automatizzato all'interno del sistema di compilazione utilizzando uno script o un file make.

Il seguente file make di esempio si basa sui contenuti di 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)