فریم ورک اندروید دارای ابزار کوچکی به نام 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)