पुष्टि करने वाला कीमैप टूल

Android फ़्रेमवर्क में validatekeymaps नाम का एक छोटा टूल होता है. इस टूल की मदद से, यह पुष्टि की जाती है कि इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइलों, मुख्य लेआउट फ़ाइलें, मुख्य वर्ण का सिंटैक्स मैप फ़ाइलें और वर्चुअल की डेफ़िनिशन फ़ाइलें.

कंपाइलेशन

validatekeymaps को कंपाइल करने के लिए, डेवलपमेंट एनवायरमेंट को सेट अप करें. इसके बाद, डाउनलोड करें Android सोर्स ट्री को कॉपी करें, उसे कंपाइल करें, फिर चलाएं:

mmm frameworks/base/tools/validatekeymaps

इस कमांड को Verifykeymaps नाम के एक होस्ट टूल को कंपाइल करना चाहिए. 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 को चलाना है और इसे पुष्टि करने के लिए एक या ज़्यादा फ़ाइलें.

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 चलाना बहुत अच्छा आइडिया है उन्हें डिवाइस पर इंस्टॉल करने से पहले.

बिल्ड सिस्टम के हिस्से के तौर पर, इस प्रोसेस को आसानी से अपने-आप पूरा किया जा सकता है. इसके लिए, स्क्रिप्ट या मेकफ़ाइल.

नीचे दिया गया मेकफ़ाइल का सैंपल, इसके कॉन्टेंट पर आधारित है 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)