Platforma Androida zawiera małe narzędzie o nazwie validatekeymaps, które służy do sprawdzania poprawności składni plików konfiguracji urządzenia wejściowego, plików układu klawiszy, plików map znaków klawiszy i plików definicji klawiszy wirtualnych.
Kompilacja
Aby skompilować validatekeymaps, skonfiguruj środowisko programistyczne, pobierz drzewo źródłowe Androida, skompiluj je, a potem uruchom:
mmm frameworks/base/tools/validatekeymaps
To polecenie powinno skompilować narzędzie hosta o nazwie validatekeymaps w katalogu out/host/<os>/bin.
Wykorzystanie
Jeśli uruchomiono envsetup.sh, aby skonfigurować środowisko programistyczne, narzędzie validatekeymaps powinno już być na ścieżce. Możesz to sprawdzić, uruchamiając validatekeymaps.
validatekeymaps
Powinny się wyświetlić te dane wyjściowe:
Keymap Validation Tool Usage: validatekeymaps [*.kl] [*.kcm] [*.idc] [virtualkeys.*] [...] Validates the specified key layouts, key character maps, input device configurations, or virtual key definitions.
Następnie wystarczy uruchomić validatekeymaps i podać ścieżkę do jednego lub więcej plików do zweryfikowania.
validatekeymaps frameworks/base/data/keyboards/Generic.kl
Przykład:
Validating file 'frameworks/base/data/keyboards/Generic.kl'... No errors. Success.
Jeśli wystąpi błąd…
validatekeymaps Bad.kl
Przykład:
Validating file 'Bad.kl'... E/KeyLayoutMap(87688): Bad.kl:24: Expected keyword, got 'ke'. Error -22 parsing key layout file. Failed!
Automatyzacja
Przed zainstalowaniem plików konfiguracji na urządzeniu bardzo warto uruchomić narzędzie validatekeymaps na wszystkich plikach konfiguracji.
Proces ten można łatwo zautomatyzować w ramach systemu kompilacji, używając skryptu lub makefile.
Ten przykładowy plik makefile jest oparty na treściach pliku 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)