ตัวอย่างโค้ดบริการ SDV Core ใน /system/software_defined_vehicle/samples ช่วยให้คุณเริ่มสร้างบริการได้ ตัวอย่างแต่ละรายการจะมีไฟล์ README ที่อธิบายกรณีการใช้งาน
ภาพรวมของไดเรกทอรีตัวอย่าง
ตารางต่อไปนี้แสดงไดเรกทอรีตัวอย่างอ้างอิงใน system/software_defined_vehicle/samples และคู่มือเอกสารประกอบที่เกี่ยวข้อง
| ไดเรกทอรีตัวอย่าง | คำอธิบาย | คู่มือเอกสารประกอบ |
|---|---|---|
system/software_defined_vehicle/samples/quickstart |
ตัวอย่างแพ็กเกจบริการ Rust แบบครบวงจรที่แสดงการเผยแพร่ VSIDL, การสมัครใช้บริการ และ RPC ระหว่างแพ็กเกจ Manager และ Monitor
|
เริ่มต้นใช้งาน Android: สร้างและเรียกใช้แพ็กเกจบริการ SDV |
system/software_defined_vehicle/samples/vsidl |
ดูแคตตาล็อก VSIDL, คำจำกัดความ protobuf และรูปแบบการติดตั้งใช้งานแพ็กเกจบริการ | ใช้ตรรกะทางธุรกิจ |
system/software_defined_vehicle/samples/concal |
ตัวอย่างไคลเอ็นต์สำหรับการอ่านและอัปเดตพารามิเตอร์การกำหนดค่าและการปรับเทียบของยานพาหนะ | การกำหนดค่าและการปรับเทียบ |
system/software_defined_vehicle/samples/health |
ตัวอย่างแพ็กเกจบริการที่ตรวจสอบประสิทธิภาพการทำงานและตัวอย่างการตรวจสอบคุณภาพของการบริการ (QoS) | การเฝ้าตรวจสอบด้านสุขภาพ |
system/software_defined_vehicle/samples/oem_partition_update_client |
บริการตัวอย่างที่ใช้ลัง sdv_oem_updater เพื่อทริกเกอร์และย้อนกลับการอัปเดตพาร์ติชัน /oem_ab
|
การอัปเดตพาร์ติชัน AB ของ OEM |
system/software_defined_vehicle/samples/sdv_gateway |
แอปตัวอย่าง IVI แบบเนทีฟและ Java (NativeSdvGatewayTestApp และ SdvCarMonitorTestApp) ที่สื่อสารกับบริการ SDV Core ผ่าน SDV Gateway
|
ใช้เกตเวย์ SDV ใน IVI |
system/software_defined_vehicle/samples/telemetry |
แหล่งข้อมูลการตรวจวัดและตัวอย่างเครื่องจำลองในอุปกรณ์ | แหล่งข้อมูล |
ใช้ Logging API
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการที่ระบุได้ที่หัวข้อต่อไปนี้
ตัวอย่างบันทึกพื้นฐาน
logging.cpp แสดงการเขียนไปยังบัฟเฟอร์ main, system และ radio
หากต้องการอ่านคำอธิบายสั้นๆ เกี่ยวกับบัฟเฟอร์บันทึกที่มีอยู่ โปรดดูหัวข้อดูบัฟเฟอร์บันทึกอื่นๆ
หากต้องการเรียกใช้ตัวอย่างโดยไม่มีบันทึกแบบมีเงื่อนไข เช่น
ALOGI_IFให้ทำดังนี้logging_sdv_sampleวิธีเรียกใช้ตัวอย่างและพิมพ์บันทึกแบบมีเงื่อนไข เช่น
ALOGI_IFLOGIF=1 logging_sdv_sample
ตัวอย่างการบันทึกที่มีโครงสร้าง
ไฟล์ตัวอย่าง: structured_logging.cpp
วิธีเรียกใช้ตัวอย่างซึ่งจะเขียนบันทึกลงในบัฟเฟอร์บันทึก
eventsstructured_logging_sdv_sample
บัฟเฟอร์บันทึก event, security และ stats จะเก็บข้อมูลที่มีโครงสร้างแทนข้อความอิสระ
ระบบจะบันทึกข้อมูลที่มีโครงสร้างโดยใช้ API รายการเหตุการณ์ ซึ่งจะบันทึกด้วยลำดับความสำคัญ INFO และรหัสแท็กที่เป็นตัวเลขเสมอ
คุณสามารถกำหนดไฟล์ .logtags ด้วยแอตทริบิวต์ logtags ใน Android.bp.
เมื่อระบุแล้ว logcat จะใช้แอตทริบิวต์นี้เพื่อรับชื่อแท็กจากรหัสแท็กที่เป็นตัวเลข จากนั้นคุณจะใช้ชื่อแท็กเพื่อกรองบันทึกที่มีโครงสร้างได้ ดูรายละเอียดและคำอธิบายรูปแบบไฟล์ได้จากความคิดเห็นในไฟล์ logcat event.logtags
ในระหว่างกระบวนการบิลด์ ระบบจะผสานไฟล์ logtags ทั้งหมดและวางไว้ในไฟล์ /system/etc/event-log-tags ในอิมเมจระบบ Android
รวบรวมตัวอย่างการกรองบันทึกเวลา
ไฟล์ตัวอย่าง: compile_time_log_filtering.cpp
ตัวอย่างนี้มีมาโครที่คุณสามารถปรับเพื่อนำบันทึกบางรายการออกจากไฟล์ปฏิบัติการได้ ดูรายละเอียดในซอร์สโค้ด
ตัวอย่างการกรองบันทึก: log_filtering.cpp
หากต้องการเรียกใช้ตัวอย่าง ให้ตั้งค่าลำดับความสำคัญของบันทึกขั้นต่ำเป็น
WARNดังนี้LOGLEVEL=WARN log_filtering_sdv_sample
การกรองบันทึกจะได้รับผลกระทบจากพร็อพเพอร์ตี้ของระบบ สำหรับบันทึกทั้งหมดที่มี
log.tag.<tag>persist.log.tag.<tag>
สำหรับบันทึกทั้งหมดในระบบ
log.tagpersist.log.tag
หากต้องการเลือกระดับบันทึกที่เลือกซึ่งจะได้รับการตรวจสอบตามลำดับ คุณสามารถตั้งค่าแต่ละค่าเป็น V, D, I, W หรือ E
ระดับบันทึกที่มีผลคือระดับที่ตั้งค่าไว้ในพร็อพเพอร์ตี้ระบบแรกที่มีค่า ซึ่งอาจต่ำกว่าหรือสูงกว่าระดับบันทึกที่แอปตั้งค่าไว้ด้วยการเรียก __android_log_set_minimum_priority เมื่อไม่ได้ตั้งค่าพร็อพเพอร์ตี้ใดๆ ระบบจะใช้ระดับที่กำหนดค่าด้วย __android_log_set_minimum_priority
ดูรายละเอียดได้ที่ภาพรวมของระบบการบันทึก
เรียกใช้ตัวอย่าง โดยตั้งค่าแท็กบันทึกเริ่มต้นเป็น
example_tag:LOGTAG=example_tag log_filtering_sdv_sample
ตัวอย่างยังมีคำจำกัดความมาโคร LOG_TAG ที่ทำเครื่องหมายเป็นความคิดเห็นซึ่งคุณใช้ตั้งค่าแท็กบันทึกสำหรับข้อความในบันทึกทั้งหมดได้ แท็กที่ตั้งค่าด้วยวิธีนี้จะลบล้างแท็กที่ตั้งค่าไว้ขณะรันไทม์ด้วย __android_log_set_default_tag
หากไม่ได้กำหนดมาโคร LOG_TAG และแอปไม่ได้เรียกใช้ __android_log_set_default_tag แท็กเริ่มต้นจะเป็นผลลัพธ์ของ getprogname() เช่น ชื่อไฟล์ปฏิบัติการ