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

يحتوي إطار عمل 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 التالي على محتويات 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)