Platforma Android zawiera małe narzędzie o nazwie validatekeymaps
do sprawdzania składni plików konfiguracyjnych urządzeń wejściowych, plików układu klawiszy, plików map znaków klawiszy i plików definicji kluczy wirtualnych.
Kompilacja
Aby skompilować validatekeymaps
, skonfiguruj środowisko programistyczne, pobierz drzewo źródłowe Androida, skompiluj je, a następnie uruchom:
mmm frameworks/base/tools/validatekeymaps
To polecenie powinno skompilować narzędzie hosta o nazwie validatekeymaps do katalogu out/host/<os>/bin
.
Stosowanie
Jeśli uruchomiłeś envsetup.sh
, aby skonfigurować środowisko programistyczne, narzędzie validatekeymaps
powinno już być na Twojej ścieżce. Możesz to sprawdzić, uruchamiając validatekeymaps
.
validatekeymaps
Powinieneś zobaczyć następujące 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 wszystko, co musisz zrobić, to uruchomić validatekeymaps
i podać mu ścieżkę jednego lub więcej plików do walidacji.
validatekeymaps frameworks/base/data/keyboards/Generic.kl
Przykład:
Validating file 'frameworks/base/data/keyboards/Generic.kl'... No errors. Success.
A jeśli jest 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
Bardzo dobrym pomysłem jest uruchomienie validatekeymaps
na wszystkich plikach konfiguracyjnych przed zainstalowaniem ich na urządzeniu.
Proces można łatwo zautomatyzować jako część systemu kompilacji za pomocą skryptu lub pliku makefile.
Poniższy przykładowy plik makefile jest oparty na zawartości 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)