למסגרת אנדרואיד יש כלי קטן שנקרא 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)