Le framework Android dispose d'un petit outil appelé validatekeymaps
pour valider le
syntaxe des fichiers de configuration de périphérique d'entrée, des fichiers de disposition de clé, des caractères de clé
des fichiers de mappage
et des fichiers de définition de clé virtuelle.
Compilation
Pour compiler validatekeymaps
, configurez l'environnement de développement, téléchargez
l'arborescence source Android, compilez-la, puis exécutez la commande suivante:
mmm frameworks/base/tools/validatekeymaps
Cette commande doit compiler un outil hôte appelé validatekeymaps dans
Répertoire out/host/<os>/bin
.
Utilisation
Si vous avez exécuté envsetup.sh
pour configurer votre environnement de développement,
L'outil validatekeymaps
devrait déjà se trouver sur votre chemin. Vous pouvez vérifier
en exécutant validatekeymaps
.
validatekeymaps
Vous devriez voir la sortie suivante :
Keymap Validation Tool Usage: validatekeymaps [*.kl] [*.kcm] [*.idc] [virtualkeys.*] [...] Validates the specified key layouts, key character maps, input device configurations, or virtual key definitions.
Ensuite, il vous suffit d'exécuter validatekeymaps
et de lui donner le chemin d'accès
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 en cas d'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
Il est très conseillé 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 compilation à l'aide d'un ou un fichier makefile.
L'exemple de fichier 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)