Outil validatekeymaps

Le framework Android dispose d'un petit outil appelé validatekeymaps pour valider la syntaxe des fichiers de configuration des périphériques d'entrée, des fichiers de mise en page des touches, des fichiers de mappage des caractères des touches et des fichiers de définition des touches virtuelles.

Compilation

Pour compiler validatekeymaps, configurez l'environnement de développement, téléchargez l'arborescence source 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.

Utilisation

Si vous avez exécuté envsetup.sh pour configurer votre environnement de développement, l'outil validatekeymaps devrait déjà être dans votre chemin d'accès. Vous pouvez le 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.

Il vous suffit ensuite d'exécuter validatekeymaps et de lui indiquer le chemin d'accès d'un ou de plusieurs fichiers à valider.

validatekeymaps frameworks/base/data/keyboards/Generic.kl

Exemple :

Validating file 'frameworks/base/data/keyboards/Generic.kl'...
No errors.

Success.

Et si une erreur se produit ?

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 recommandé 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 script ou d'un fichier make.

L'exemple de fichier make 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)