narzędzie validkeymaps

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)