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)