כלי validatekeymaps

למסגרת אנדרואיד יש כלי קטן שנקרא 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 על כל קבצי התצורה לפני התקנתם במכשיר.

התהליך יכול להיות אוטומטי בקלות כחלק ממערכת הבנייה על ידי שימוש בסקריפט או makefile.

קובץ ה-makefil לדוגמה הבא מבוסס על התוכן של 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)