Framework Android memiliki alat kecil yang disebut validatekeymaps
untuk memvalidasi
sintaksis file konfigurasi perangkat input, file tata letak kunci, karakter kunci
file peta dan file definisi kunci virtual.
Kompilasi
Untuk mengompilasi validatekeymaps
, siapkan lingkungan pengembangan, download
hierarki sumber Android, mengompilasinya, lalu jalankan:
mmm frameworks/base/tools/validatekeymaps
Perintah ini harus mengompilasi alat host yang disebut validasikeymaps ke dalam
Direktori out/host/<os>/bin
.
Penggunaan
Jika Anda menjalankan envsetup.sh
untuk menyiapkan lingkungan pengembangan, maka
Alat validatekeymaps
seharusnya sudah ada di jalur Anda. Anda dapat memverifikasi
ini 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 yang perlu Anda lakukan adalah menjalankan validatekeymaps
dan memberikannya jalur
satu atau lebih file
untuk 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
Menjalankan validatekeymaps
pada semua file konfigurasi adalah ide yang sangat bagus
sebelum menginstalnya di perangkat.
Proses ini bisa dengan mudah diotomatiskan sebagai bagian dari sistem build menggunakan skrip atau makefile.
Contoh makefile berikut ini 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)