เฟรมเวิร์ก 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
แล้วระบุเส้นทางของไฟล์อย่างน้อย 1 ไฟล์ที่จะตรวจสอบ
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
ในไฟล์การกําหนดค่าทั้งหมดก่อนติดตั้งในอุปกรณ์
กระบวนการนี้ทําแบบอัตโนมัติได้ง่ายๆ โดยใช้สคริปต์หรือไฟล์ make เป็นส่วนหนึ่งของระบบบิลด์
ตัวอย่างไฟล์ Make ต่อไปนี้อิงตามเนื้อหาของ
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)