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)