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