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