أداة التحقّق من صحة خرائط المفاتيح

يتضمّن إطار عمل Android أداة صغيرة تُسمى validatekeymaps للتحقّق من صحة بناء الجملة لملفات إعداد جهاز الإدخال وملفات تصميم المفاتيح والحرف الرئيسي ملفات خرائط وملفات تعريف المفتاح الافتراضي.

موسيقى مجمّعة

لتجميع validatekeymaps، وإعداد بيئة التطوير، وتنزيل شجرة مصادر Android، وتجميعها، ثم تشغيل:

mmm frameworks/base/tools/validatekeymaps

ينبغي أن يجمّع هذا الأمر أداة مضيف تُسمى validkeymaps في ملف دليل 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 التالي إلى محتوى 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)