Le framework Android dispose d'un petit outil appelé validatekeymaps
pour valider la syntaxe des fichiers de configuration du périphérique d'entrée, des fichiers de disposition des touches, des fichiers de mappage de caractères clés et des fichiers de définition de clé virtuelle.
Compilation
Pour compiler validatekeymaps
, configurez l'environnement de développement, téléchargez l'arborescence des sources Android, compilez-la, puis exécutez :
mmm frameworks/base/tools/validatekeymaps
Cette commande doit compiler un outil hôte appelé validatekeymaps dans le répertoire out/host/<os>/bin
.
Usage
Si vous avez exécuté envsetup.sh
pour configurer votre environnement de développement, l'outil validatekeymaps
devrait déjà être sur votre chemin. Vous pouvez le vérifier en exécutant validatekeymaps
.
validatekeymaps
Vous devriez voir le résultat suivant :
Keymap Validation Tool Usage: validatekeymaps [*.kl] [*.kcm] [*.idc] [virtualkeys.*] [...] Validates the specified key layouts, key character maps, input device configurations, or virtual key definitions.
Il ne vous reste plus qu'à exécuter validatekeymaps
et lui donner le chemin d'un ou plusieurs fichiers à valider.
validatekeymaps frameworks/base/data/keyboards/Generic.kl
Exemple:
Validating file 'frameworks/base/data/keyboards/Generic.kl'... No errors. Success.
Et s'il y a une erreur...
validatekeymaps Bad.kl
Exemple:
Validating file 'Bad.kl'... E/KeyLayoutMap(87688): Bad.kl:24: Expected keyword, got 'ke'. Error -22 parsing key layout file. Failed!
Automatisation
C'est une très bonne idée d'exécuter validatekeymaps
sur tous les fichiers de configuration avant de les installer sur un appareil.
Le processus peut facilement être automatisé dans le cadre du système de construction en utilisant un script ou un makefile.
L'exemple de makefile suivant est basé sur le contenu de 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)