ตัวอย่างโค้ดของบริการหลักของ SDV ใน /system/software_defined_vehicle/samples ช่วยให้คุณเริ่มสร้างบริการได้ โดยแต่ละตัวอย่างจะมีไฟล์ README ที่อธิบายกรณีการใช้งาน
ใช้ Logging API
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการที่ระบุไว้ได้ที่
ตัวอย่างบันทึกพื้นฐาน
logging.cpp แสดงการเขียนไปยังบัฟเฟอร์ main, system และ radio
หากต้องการอ่านคำอธิบายสั้นๆ เกี่ยวกับบัฟเฟอร์บันทึกที่มี ให้ดูที่
ดูบัฟเฟอร์บันทึกทางเลือก
วิธีเรียกใช้ตัวอย่างโดยไม่ใช้บันทึกแบบมีเงื่อนไข เช่น
ALOGI_IFlogging_sdv_sampleวิธีเรียกใช้ตัวอย่างและพิมพ์บันทึกแบบมีเงื่อนไข เช่น
ALOGI_IFLOGIF=1 logging_sdv_sample
ตัวอย่างการบันทึกที่มีโครงสร้าง
ไฟล์ตัวอย่าง: structured_logging.cpp
วิธีเรียกใช้ตัวอย่างซึ่งเขียนบันทึกลงในบัฟเฟอร์บันทึก
eventsstructured_logging_sdv_sample
บัฟเฟอร์บันทึก event, security และ stats จะเก็บ Structured Data แทนข้อความอิสระ
ระบบจะบันทึก Structured Data โดยใช้ Event List 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
วิธีเรียกใช้ตัวอย่างโดยตั้งค่าลำดับความสำคัญของบันทึกขั้นต่ำเป็น
WARNLOGLEVEL=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_tagLOGTAG=example_tag log_filtering_sdv_sample
ตัวอย่างนี้ยังมีคำจำกัดความมาโคร LOG_TAG ที่แสดงความคิดเห็นซึ่งคุณใช้เพื่อตั้งค่าแท็กบันทึกสำหรับข้อความบันทึกทั้งหมดได้ แท็กที่ตั้งค่าด้วยวิธีนี้จะลบล้างแท็กที่ตั้งค่าไว้ขณะรันไทม์ด้วย __android_log_set_default_tag
หากไม่ได้กำหนดมาโคร LOG_TAG และแอปไม่ได้เรียก __android_log_set_default_tag แท็กเริ่มต้นจะเป็นผลลัพธ์ของ getprogname() เช่น ชื่อไฟล์ที่เรียกใช้งานได้