Kerangka kerja Android memiliki alat kecil yang disebut validatekeymaps
untuk memvalidasi sintaks file konfigurasi perangkat input, file tata letak kunci, file peta karakter kunci, dan file definisi kunci virtual.
Kompilasi
Untuk mengkompilasi validatekeymaps
, siapkan lingkungan pengembangan, unduh pohon sumber Android, kompilasi, lalu jalankan:
mmm frameworks/base/tools/validatekeymaps
Perintah ini harus mengkompilasi alat host yang disebut validasikeymaps 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 memverifikasi ini dengan menjalankan validatekeymaps
.
validatekeymaps
Anda akan melihat keluaran 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.
Maka yang perlu Anda lakukan hanyalah menjalankan validatekeymaps
dan memberinya jalur dari 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 ada kesalahan...
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
pada semua file konfigurasi sebelum menginstalnya pada perangkat.
Prosesnya dapat dengan mudah diotomatisasi sebagai bagian dari sistem pembangunan dengan 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)