Struktura Androida zawiera małe narzędzie o nazwie validatekeymaps
, które służy 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ódeł Androida, skompiluj je, a następnie uruchom:
mmm frameworks/base/tools/validatekeymaps
To polecenie powinno skompilować narzędzie hosta o nazwie validkeymaps do katalogu out/host/<os>/bin
.
Stosowanie
Jeśli uruchomiłeś envsetup.sh
w celu skonfigurowania środowiska programistycznego, narzędzie validatekeymaps
powinno już znajdować się 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ć ścieżkę do jednego lub więcej plików do sprawdzenia.
validatekeymaps frameworks/base/data/keyboards/Generic.kl
Przykład:
Validating file 'frameworks/base/data/keyboards/Generic.kl'... No errors. Success.
A jeśli pojawi się 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ć w ramach 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)