alat validatekeymaps

Framework Android memiliki alat kecil yang disebut validatekeymaps untuk memvalidasi sintaksis file konfigurasi perangkat input, file tata letak tombol, file peta karakter tombol, dan file definisi kunci virtual.

Kompilasi

Untuk mengompilasi validatekeymaps, siapkan lingkungan pengembangan, download hierarki sumber Android, kompilasi, lalu jalankan:

mmm frameworks/base/tools/validatekeymaps

Perintah ini akan mengompilasi alat host yang disebut validatekeymaps ke dalam direktori out/host/<os>/bin.

Penggunaan

Jika Anda menjalankan envsetup.sh untuk menyiapkan lingkungan pengembangan, alat validatekeymaps seharusnya sudah ada di jalur Anda. Anda dapat memverifikasinya dengan menjalankan validatekeymaps.

validatekeymaps

Anda akan melihat output berikut:

Keymap Validation Tool

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

Kemudian, Anda hanya perlu menjalankan validatekeymaps dan memberikan jalur satu atau beberapa file yang akan divalidasi.

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

Contoh:

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

Success.

Dan jika terjadi error...

validatekeymaps Bad.kl

Contoh:

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

Failed!

Otomatisasi

Sebaiknya jalankan validatekeymaps di semua file konfigurasi sebelum menginstalnya di perangkat.

Proses ini dapat dengan mudah diotomatiskan sebagai bagian dari sistem build menggunakan skrip atau makefile.

Contoh makefile berikut didasarkan pada konten 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)