strumento convalidakeymap

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

Compilation

Per compilare validatekeymaps, configura l'ambiente di sviluppo, scarica nell'albero di origine Android, compilalo ed esegui:

mmm frameworks/base/tools/validatekeymaps

Questo comando deve compilare uno strumento host chiamato validkeymaps nella Directory out/host/<os>/bin.

Utilizzo

Se hai eseguito envsetup.sh per configurare l'ambiente di sviluppo, Lo strumento validatekeymaps dovrebbe essere già presente nel percorso. Puoi verificare eseguendo validatekeymaps.

validatekeymaps

Dovresti vedere l'output seguente:

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 non devi fare altro che eseguire validatekeymaps e assegnargli il percorso 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

È molto buona eseguire validatekeymaps su tutti i file di configurazione prima di installarle su un dispositivo.

Il processo può essere facilmente automatizzato all'interno del sistema di compilazione utilizzando una o un makefile.

Il seguente makefile 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)