validatekeymaps-Tool

Das Android-Framework bietet ein kleines Tool namens validatekeymaps, mit dem die Syntax von Konfigurationsdateien für Eingabegeräte, Tastenlayoutdateien, Tastenbelegungsdateien und Dateien mit virtuellen Tastendefinitionen validiert werden kann.

Compilation

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

mmm frameworks/base/tools/validatekeymaps

Mit diesem Befehl sollte ein Hosttool namens validatekeymaps im Verzeichnis out/host/<os>/bin kompiliert werden.

Nutzung

Wenn Sie envsetup.sh zum Einrichten Ihrer Entwicklungsumgebung ausgeführt haben, sollte das validatekeymaps-Tool bereits in Ihrem Pfad enthalten sein. 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.

Anschließend müssen Sie nur noch validatekeymaps ausführen und den Pfad zu einer oder mehreren Dateien angeben, die validiert werden sollen.

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

Beispiel:

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

Success.

Und wenn ein Fehler auftritt…

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 sehr empfehlenswert, validatekeymaps auf allen Konfigurationsdateien auszuführen, bevor Sie sie auf einem Gerät installieren.

Der Prozess kann mit einem Script oder einem Makefile einfach als Teil des Build-Systems 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)