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)