במסגרת Android יש כלי קטן בשם validatekeymaps
כדי לאמת
תחביר של קובצי תצורה של מכשיר קלט, קובצי פריסת מקשים, תו מפתח
של מפות וקבצים בהגדרת מפתח וירטואלי.
קומפילציה
כדי להדר את validatekeymaps
, צריך להגדיר את סביבת הפיתוח, להוריד את האפליקציה
עץ המקור של Android, להדר אותו ואז להריץ את הפקודה:
mmm frameworks/base/tools/validatekeymaps
הפקודה הזו אמורה להדר כלי מארח שנקרא verificationkeymaps
ספריית 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
בכל קובצי התצורה
לפני ההתקנה שלהם במכשיר.
אפשר לבצע בקלות אוטומציה של התהליך כחלק ממערכת ה-build באמצעות סקריפט או קובץ Makefile.
קטע ה-createfile לדוגמה הבא מבוסס על התוכן של
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)