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)