키맵 유효성 검사 도구

Android 프레임워크에는 입력 기기 구성 파일, 키 레이아웃 파일, 키 문자 맵 파일 및 가상 키 정의 파일의 구문 확인을 위한 validatekeymaps라는 작은 도구가 있습니다.

컴파일

validatekeymaps를 컴파일하려면 개발 환경을 설정하고 Android 소스 트리를 다운로드하여 컴파일한 후 다음을 실행합니다.

mmm frameworks/base/tools/validatekeymaps

이 명령어는 validatekeymaps라는 호스트 도구를 out/host/<os>/bin 디렉터리에 컴파일해야 합니다.

사용

envsetup.sh를 실행하여 개발 환경을 설정했다면 validatekeymaps 도구가 이미 경로에 있어야 합니다. 이는 validatekeymaps를 실행하여 확인할 수 있습니다.

validatekeymaps

다음과 같은 출력이 표시되어야 합니다.

Keymap Validation Tool

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

이제 validatekeymaps를 실행하고 확인할 파일 1개 이상의 경로를 제공하기만 하면 됩니다.

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

예:

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

Success.

오류가 있는 경우...

validatekeymaps Bad.kl

예:

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

Failed!

자동화

구성 파일을 기기에 설치하기 전에 모든 구성 파일에 validatekeymaps를 실행하는 것은 매우 좋은 생각입니다.

프로세스는 스크립트 또는 makefile을 사용하여 빌드 시스템의 일부로 쉽게 자동화할 수 있습니다.

다음의 샘플 makefile은 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)