Android 框架有一个名为 validatekeymaps
的小工具,用于验证输入设备配置文件、按键布局文件、按键字符映射文件和虚拟按键定义文件的语法。
编译
要编译 validatekeymaps
,请设置开发环境,下载 Android 源代码树,编译它,然后运行
mmm frameworks/base/tools/validatekeymaps
此命令应将名为 validatekeymaps 的主机工具编译到 out/host/
目录中。
用法
如果您运行了 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
并为其提供一个或多个要验证的文件的路径。
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)