công cụ xác thực sơ đồ bàn phím

Khung Android có một công cụ nhỏ tên là validatekeymaps để xác thực cú pháp của tệp cấu hình thiết bị đầu vào, tệp bố cục phím, ký tự phím tệp bản đồ và tệp định nghĩa khoá ảo.

Biên dịch

Để biên dịch validatekeymaps, hãy thiết lập môi trường phát triển, tải xuống cây nguồn Android, biên dịch cây rồi chạy:

mmm frameworks/base/tools/validatekeymaps

Lệnh này sẽ biên dịch một công cụ lưu trữ có tên là xác thực sơ đồ bàn phím thành Thư mục out/host/<os>/bin.

Cách sử dụng

Nếu bạn chạy envsetup.sh để thiết lập môi trường phát triển, thì hàm Công cụ validatekeymaps đã có trên đường dẫn của bạn. Bạn có thể xác minh thao tác này bằng cách chạy validatekeymaps.

validatekeymaps

Bạn sẽ thấy kết quả sau đây:

Keymap Validation Tool

Usage:
 validatekeymaps [*.kl] [*.kcm] [*.idc] [virtualkeys.*] [...]
   Validates the specified key layouts, key character maps, 
   input device configurations, or virtual key definitions.

Sau đó, bạn chỉ cần chạy validatekeymaps và cung cấp đường dẫn cho một hoặc nhiều tệp cần xác thực.

validatekeymaps frameworks/base/data/keyboards/Generic.kl

Ví dụ:

Validating file 'frameworks/base/data/keyboards/Generic.kl'...
No errors.

Success.

Nếu có lỗi...

validatekeymaps Bad.kl

Ví dụ:

Validating file 'Bad.kl'...
E/KeyLayoutMap(87688): Bad.kl:24: Expected keyword, got 'ke'.
Error -22 parsing key layout file.

Failed!

Tự động hóa

Bạn rất nên chạy validatekeymaps trên tất cả các tệp cấu hình trước khi cài đặt trên thiết bị.

Quá trình này có thể dễ dàng được tự động hoá như một phần của hệ thống xây dựng bằng cách sử dụng hoặc một tệp makefile.

Tệp makefile mẫu sau đây dựa trên nội dung của 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)