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)