strumento validatekeymaps

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

Compilazione

Per compilare validatekeymaps , imposta l'ambiente di sviluppo, scarica l'albero dei sorgenti di Android, compilalo, quindi 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 sul 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.

Quindi tutto ciò che devi fare è eseguire validatekeymaps e fornirgli 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 c'è 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

È un'ottima idea eseguire validatekeymaps su tutti i file di configurazione prima di installarli su un dispositivo.

Il processo può essere facilmente automatizzato come parte del sistema di compilazione utilizzando uno script o un makefile.

Il seguente makefile di esempio è basato sul contenuto 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)