驗證鍵映射工具

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

透過使用腳本或 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)