Contoh kode layanan SDV Core di /system/software_defined_vehicle/samples
memungkinkan Anda mulai membangun layanan. Setiap contoh berisi file README
yang menjelaskan kasus penggunaan.
Ringkasan direktori contoh
Tabel berikut mencantumkan direktori contoh referensi di
system/software_defined_vehicle/samples dan panduan dokumentasi
yang sesuai:
| Direktori sampel | Deskripsi | Panduan dokumentasi |
|---|---|---|
system/software_defined_vehicle/samples/quickstart |
Contoh paket layanan Rust end-to-end yang menunjukkan publikasi, langganan, dan RPC VSIDL antara paket Manager dan Monitor.
|
Panduan memulai: Membuat dan menjalankan paket layanan SDV |
system/software_defined_vehicle/samples/vsidl |
Lihat katalog VSIDL, definisi protobuf, dan pola implementasi paket layanan. | Mengimplementasikan logika bisnis |
system/software_defined_vehicle/samples/concal |
Contoh klien untuk membaca dan memperbarui parameter konfigurasi dan kalibrasi kendaraan. | Konfigurasi dan kalibrasi |
system/software_defined_vehicle/samples/health |
Paket layanan yang dipantau kondisi dan contoh pemantauan kualitas layanan (QoS). | Pemantauan kondisi |
system/software_defined_vehicle/samples/oem_partition_update_client |
Layanan contoh yang menggunakan crate sdv_oem_updater untuk memicu
dan me-roll back update partisi /oem_ab.
|
Update partisi AB OEM |
system/software_defined_vehicle/samples/sdv_gateway |
Aplikasi contoh IVI Native dan Java (NativeSdvGatewayTestApp
dan SdvCarMonitorTestApp) yang berkomunikasi dengan layanan SDV Core
melalui Gateway SDV.
|
Menggunakan Gateway SDV di IVI |
system/software_defined_vehicle/samples/telemetry |
Sumber data telemetri di perangkat dan contoh simulator. | Sumber data |
Menggunakan logging API
Untuk mempelajari lebih lanjut petunjuk yang diberikan, lihat:
Contoh log dasar
logging.cpp menampilkan penulisan ke buffer main, system, dan radio.
Untuk membaca deskripsi singkat tentang buffering log yang tersedia, lihat
Menampilkan buffering log alternatif.
Untuk menjalankan contoh tanpa log bersyarat, seperti
ALOGI_IF:logging_sdv_sampleUntuk menjalankan contoh dan mencetak log bersyarat, seperti
ALOGI_IF:LOGIF=1 logging_sdv_sample
Contoh logging terstruktur
File contoh: structured_logging.cpp
Untuk menjalankan contoh, yang menulis log ke buffer log
events:structured_logging_sdv_sample
Buffer log event, security, dan stats menyimpan data terstruktur, bukan teks bebas.
Data terstruktur dicatat ke dalam log menggunakan API daftar peristiwa, yang selalu dicatat ke dalam log dengan
prioritas INFO dan ID tag numerik.
File .logtags dapat ditentukan dengan atribut logtags di Android.bp.
Jika disediakan, logcat akan menggunakannya untuk mendapatkan nama tag dari ID tag
numerik. Nama tag kemudian dapat digunakan untuk memfilter log terstruktur. Untuk mengetahui detail dan
deskripsi format file, lihat komentar di file
logcat event.logtags.
Selama proses build, semua file logtags digabungkan dan ditempatkan ke dalam
file /system/etc/event-log-tags di image sistem Android.
Mengompilasi contoh pemfilteran log waktu
File contoh: compile_time_log_filtering.cpp
Contoh ini berisi makro yang dapat Anda sesuaikan untuk menghapus beberapa log dari file yang dapat dieksekusi. Lihat kode sumber untuk mengetahui detailnya.
Contoh pemfilteran log: log_filtering.cpp
Untuk menjalankan contoh, tetapkan prioritas log minimum ke
WARN:LOGLEVEL=WARN log_filtering_sdv_sample
Pemfilteran log dipengaruhi oleh properti sistem. Untuk semua log dengan
log.tag.<tag>persist.log.tag.<tag>
Untuk semua log dalam sistem:
log.tagpersist.log.tag
Untuk memilih level log yang dipilih, yang diperiksa secara berurutan, setiap nilai dapat
ditetapkan ke V, D, I, W, atau E.
Level log efektif adalah level yang ditetapkan pada properti sistem pertama yang memiliki
nilai, yang mungkin lebih rendah atau lebih tinggi daripada level log yang ditetapkan oleh aplikasi dengan
panggilan __android_log_set_minimum_priority. Jika tidak ada properti yang
ditetapkan, level yang dikonfigurasi dengan __android_log_set_minimum_priority akan berlaku.
Untuk mengetahui detailnya, lihat Ringkasan sistem logging.
Jalankan contoh, dengan menetapkan tag log default ke
example_tag:LOGTAG=example_tag log_filtering_sdv_sample
Contoh ini juga berisi definisi makro LOG_TAG yang dijadikan sebagai komentar yang dapat Anda gunakan untuk menetapkan tag log untuk semua pesan log. Tag yang ditetapkan dengan cara ini
akan menggantikan tag yang ditetapkan saat runtime dengan __android_log_set_default_tag.
Jika makro LOG_TAG tidak ditentukan dan aplikasi tidak memanggil
__android_log_set_default_tag, tag defaultnya adalah hasil dari
getprogname(). Misalnya, nama file yang dapat dieksekusi.