Android 架構中有個名為 validatekeymaps
的小型工具,可用來驗證
輸入裝置設定檔案、金鑰版面配置檔案、按鍵字元的語法
對應檔案和虛擬鍵定義檔
編譯
如要編譯 validatekeymaps
,請設定開發環境,請下載
Android 原始碼樹狀結構,加以編譯,然後執行:
mmm frameworks/base/tools/validatekeymaps
這項指令應將名為 Verifykeymaps 的主機工具編譯到
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
然後再安裝到裝置上
開發人員可以使用 指令碼或 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)