เครื่องมือ validatekeymaps

เฟรมเวิร์ก 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)