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)