Ferramenta Validar Mapas de Teclas

A estrutura do Android possui uma pequena ferramenta chamada validatekeymaps para validar a sintaxe dos arquivos de configuração do dispositivo de entrada, arquivos de layout de chave, arquivos de mapas de caracteres de chave e arquivos de definição de chave virtual.

Compilação

Para compilar validatekeymaps , configure o ambiente de desenvolvimento, baixe a árvore de origem do Android, compile-a e execute:

mmm frameworks/base/tools/validatekeymaps

Este comando deve compilar uma ferramenta de host chamada validatekeymaps no diretório out/host/<os>/bin .

Uso

Se você executou o envsetup.sh para configurar seu ambiente de desenvolvimento, a ferramenta validatekeymaps já deve estar no seu caminho. Você pode verificar isso executando validatekeymaps .

validatekeymaps

Você deve ver a seguinte saída:

Keymap Validation Tool

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

Em seguida, tudo o que você precisa fazer é executar validatekeymaps e fornecer o caminho de um ou mais arquivos para validar.

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

Exemplo:

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

Success.

E se houver algum erro...

validatekeymaps Bad.kl

Exemplo:

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

Failed!

Automação

É uma boa ideia executar validatekeymaps em todos os arquivos de configuração antes de instalá-los em um dispositivo.

O processo pode ser facilmente automatizado como parte do sistema de compilação usando um script ou um makefile.

O seguinte makefile de amostra é baseado no conteúdo de 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)