ابزار validatekeymaps

چارچوب 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)