validkeymaps-Tool

Das Android-Framework enthält ein kleines Tool namens validatekeymaps zur Validierung des Syntax der Konfigurationsdateien des Eingabegeräts, Schlüssellayoutdateien, Schlüsselzeichen Map-Dateien und virtuelle Schlüssel-Definitionsdateien.

Compilation

Richte zum Kompilieren von validatekeymaps die Entwicklungsumgebung ein und lade die Datei herunter den Android-Quellbaum, kompilieren Sie ihn und führen Sie dann folgenden Befehl aus:

mmm frameworks/base/tools/validatekeymaps

Dieser Befehl sollte ein Host-Tool namens „validkeymaps“ im out/host/<os>/bin-Verzeichnis.

Nutzung

Wenn Sie zum Einrichten Ihrer Entwicklungsumgebung envsetup.sh ausgeführt haben, Das validatekeymaps-Tool sollte sich bereits in Ihrem Pfad befinden. Sie können bestätigen, 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 validatekeymaps ausführen und eine oder mehrere zu validierende Dateien.

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 für alle Konfigurationsdateien auszuführen. bevor Sie sie auf einem Gerät installieren.

Der Prozess kann als Teil des Build-Systems einfach automatisiert werden, indem ein Skript oder ein Makefile.

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)