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
並為其提供一個或多個要驗證的文件的路徑。
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
是一個非常好的主意。
通過使用腳本或生成文件,該過程可以輕鬆地作為構建系統的一部分自動化。
以下示例生成文件基於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)