anahtar haritaları doğrulama aracı

Android çerçevesi, giriş cihazı yapılandırma dosyalarının, anahtar düzeni dosyalarının, anahtar karakter haritaları dosyalarının ve sanal anahtar tanımı dosyalarının sözdizimini doğrulamak için validatekeymaps adı verilen küçük bir araca sahiptir.

Derleme

validatekeymaps derlemek için geliştirme ortamını kurun, Android kaynak ağacını indirin, derleyin ve ardından şunu çalıştırın:

mmm frameworks/base/tools/validatekeymaps

Bu komut, validatekeymaps adlı bir ana bilgisayar aracını out/host/<os>/bin dizininde derlemelidir.

Kullanım

Geliştirme ortamınızı kurmak için envsetup.sh çalıştırdıysanız validatekeymaps aracı zaten yolunuzda olmalıdır. validatekeymaps komutunu çalıştırarak bunu doğrulayabilirsiniz.

validatekeymaps

Aşağıdaki çıktıyı görmelisiniz:

Keymap Validation Tool

Usage:
 validatekeymaps [*.kl] [*.kcm] [*.idc] [virtualkeys.*] [...]
   Validates the specified key layouts, key character maps, 
   input device configurations, or virtual key definitions.

Daha sonra tek yapmanız gereken validatekeymaps çalıştırmak ve ona doğrulanacak bir veya daha fazla dosyanın yolunu vermek.

validatekeymaps frameworks/base/data/keyboards/Generic.kl

Örnek:

Validating file 'frameworks/base/data/keyboards/Generic.kl'...
No errors.

Success.

Ve eğer bir hata varsa...

validatekeymaps Bad.kl

Örnek:

Validating file 'Bad.kl'...
E/KeyLayoutMap(87688): Bad.kl:24: Expected keyword, got 'ke'.
Error -22 parsing key layout file.

Failed!

Otomasyon

Bir aygıta yüklemeden önce tüm yapılandırma dosyalarında validatekeymaps çalıştırmak çok iyi bir fikirdir.

İşlem, derleme sisteminin bir parçası olarak bir komut dosyası veya makefile kullanılarak kolayca otomatikleştirilebilir.

Aşağıdaki örnek makefile frameworks/base/data/keyboards/Android.mk içeriğine dayanmaktadır.

# 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)