ابزار validatekeymaps

فریم ورک اندروید دارای ابزار کوچکی به نام validatekeymaps برای تایید نحو فایل‌های پیکربندی دستگاه ورودی، فایل‌های طرح‌بندی کلید، فایل‌های نقشه کاراکترهای کلیدی و فایل‌های تعریف کلید مجازی است.

تالیف

برای کامپایل validatekeymaps ، محیط توسعه را تنظیم کنید، درخت منبع اندروید را دانلود کنید، آن را کامپایل کنید، سپس اجرا کنید:

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)