Keymaps ツールを検証する

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)