أداة 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.

يستند نموذج ملف الإنشاء التالي إلى محتوىملف 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)