Validatekeymaps-Tool

Das Android-Framework verfügt über ein kleines Tool namens validatekeymaps , um die Syntax von Konfigurationsdateien für Eingabegeräte, Tastenlayoutdateien, Tastenzuordnungsdateien und Definitionsdateien für virtuelle Tasten zu validieren.

Zusammenstellung

Um validatekeymaps zu kompilieren, richten Sie die Entwicklungsumgebung ein, laden Sie den Android-Quellbaum herunter, kompilieren Sie ihn und führen Sie dann Folgendes aus:

mmm frameworks/base/tools/validatekeymaps

Dieser Befehl sollte ein Host-Tool namens „validatekeymaps“ in das Verzeichnis out/host/<os>/bin kompilieren.

Verwendung

Wenn Sie envsetup.sh ausgeführt haben, um Ihre Entwicklungsumgebung einzurichten, sollte sich das validatekeymaps Tool bereits auf Ihrem Weg befinden. Sie können dies überprüfen, indem Sie validatekeymaps ausführen.

validatekeymaps

Sie sollten die folgende Ausgabe sehen:

Keymap Validation Tool

Usage:
 validatekeymaps [*.kl] [*.kcm] [*.idc] [virtualkeys.*] [...]
   Validates the specified key layouts, key character maps, 
   input device configurations, or virtual key definitions.

Dann müssen Sie nur noch validatekeymaps ausführen und den Pfad einer oder mehrerer zu validierender Dateien angeben.

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

Beispiel:

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

Success.

Und wenn es einen Fehler gibt...

validatekeymaps Bad.kl

Beispiel:

Validating file 'Bad.kl'...
E/KeyLayoutMap(87688): Bad.kl:24: Expected keyword, got 'ke'.
Error -22 parsing key layout file.

Failed!

Automatisierung

Es ist eine sehr gute Idee, validatekeymaps für alle Konfigurationsdateien auszuführen, bevor Sie sie auf einem Gerät installieren.

Der Prozess kann als Teil des Build-Systems mithilfe eines Skripts oder eines Makefiles problemlos automatisiert werden.

Das folgende Beispiel-Makefile basiert auf dem Inhalt von 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)