công cụ xác thực keymap

Khung Android có một công cụ nhỏ gọi 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 khóa, tệp bản đồ ký tự chính và tệp định nghĩa khóa ảo.

biên soạn

Để 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 nó, sau đó chạy:

mmm frameworks/base/tools/validatekeymaps

Lệnh này sẽ biên dịch một công cụ máy chủ có tên là validkeymaps vào 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 của mình thì công cụ validatekeymaps sẽ có sẵn trên đường dẫn của bạn. Bạn có thể xác minh điều này bằng cách chạy validatekeymaps .

validatekeymaps

Bạn sẽ thấy đầu ra sau:

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 đó, tất cả những gì bạn cần làm là chạy validatekeymaps và cung cấp cho nó đường dẫn của một hoặc nhiều tệp để xác thực.

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

Ví dụ:

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

Success.

Và nếu có sai sót...

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 nên chạy validatekeymaps trên tất cả các tệp cấu hình trước khi cài đặt chúng trên thiết bị.

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

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)