Mã mẫu cốt lõi

Mã mẫu của dịch vụ SDV Core trong /system/software_defined_vehicle/samples giúp bạn bắt đầu xây dựng dịch vụ của mình. Mỗi mẫu đều chứa một tệp README mô tả trường hợp sử dụng.

Tổng quan về thư mục mẫu

Bảng sau đây liệt kê các thư mục mẫu tham chiếu trong system/software_defined_vehicle/samples và hướng dẫn tài liệu tương ứng:

Thư mục mẫu Mô tả Hướng dẫn về tài liệu
system/software_defined_vehicle/samples/quickstart Mẫu gói dịch vụ Rust hai đầu minh hoạ việc xuất bản, đăng ký và RPC VSIDL giữa các gói Manager và Monitor. Bắt đầu nhanh: Tạo và thực thi các gói dịch vụ SDV
system/software_defined_vehicle/samples/vsidl Tham khảo danh mục VSIDL, định nghĩa protobuf và các mẫu triển khai gói dịch vụ. Triển khai logic kinh doanh
system/software_defined_vehicle/samples/concal Mẫu ứng dụng để đọc và cập nhật cấu hình xe cũng như tham số hiệu chỉnh. Cấu hình và hiệu chỉnh
system/software_defined_vehicle/samples/health Mẫu giám sát chất lượng dịch vụ (QoS) và gói dịch vụ được giám sát tình trạng. Theo dõi sức khoẻ
system/software_defined_vehicle/samples/oem_partition_update_client Dịch vụ mẫu sử dụng thùng sdv_oem_updater để kích hoạt và khôi phục bản cập nhật phân vùng /oem_ab. Bản cập nhật phân vùng AB của OEM
system/software_defined_vehicle/samples/sdv_gateway Các ứng dụng mẫu IVI gốc và Java (NativeSdvGatewayTestApp và SdvCarMonitorTestApp) giao tiếp với các dịch vụ SDV Core thông qua SDV Gateway. Sử dụng Cổng SDV trên IVI
system/software_defined_vehicle/samples/telemetry Nguồn dữ liệu đo từ xa trên thiết bị và mẫu trình mô phỏng. Nguồn dữ liệu

Sử dụng API ghi nhật ký

Để tìm hiểu thêm về hướng dẫn được cung cấp, hãy xem:

Mẫu nhật ký cơ bản

logging.cpp trình bày việc ghi vào vùng đệm main, system và radio. Để đọc nội dung mô tả ngắn về các vùng đệm nhật ký hiện có, hãy xem phần Xem vùng đệm nhật ký thay thế.

  • Cách chạy mẫu mà không có nhật ký có điều kiện, chẳng hạn như ALOGI_IF:

    logging_sdv_sample
    
  • Để chạy mẫu và in nhật ký có điều kiện, chẳng hạn như ALOGI_IF:

    LOGIF=1 logging_sdv_sample
    

Mẫu ghi nhật ký có cấu trúc

Tệp mẫu: structured_logging.cpp

  • Cách chạy mẫu (ghi nhật ký vào vùng đệm nhật ký events):

    structured_logging_sdv_sample
    

Vùng đệm nhật ký event, security và stats lưu giữ dữ liệu có cấu trúc thay vì văn bản tự do.

Dữ liệu có cấu trúc được ghi lại bằng API danh sách sự kiện, luôn được ghi lại với mức độ ưu tiên INFO và mã nhận dạng thẻ dạng số.

Bạn có thể xác định tệp .logtags bằng thuộc tính logtags trong Android.bp.. Khi được cung cấp, logcat sẽ sử dụng tệp này để lấy tên thẻ từ mã nhận dạng thẻ dạng số. Sau đó, bạn có thể dùng tên thẻ để lọc nhật ký có cấu trúc. Để biết thông tin chi tiết và nội dung mô tả về định dạng tệp, hãy xem nhận xét trong tệp logcat event.logtags.

Trong quá trình tạo bản dựng, tất cả tệp logtags đều được hợp nhất và đặt vào tệp /system/etc/event-log-tags trong hình ảnh hệ thống Android.

Biên dịch mẫu lọc nhật ký thời gian

Tệp mẫu: compile_time_log_filtering.cpp

Mẫu này chứa các macro mà bạn có thể điều chỉnh để xoá một số nhật ký khỏi tệp thực thi. Hãy xem mã nguồn để biết thông tin chi tiết.

Mẫu lọc nhật ký: log_filtering.cpp

  • Để chạy mẫu, hãy đặt mức độ ưu tiên tối thiểu của nhật ký thành WARN:

    LOGLEVEL=WARN log_filtering_sdv_sample
    

Việc lọc nhật ký chịu ảnh hưởng của các thuộc tính hệ thống. Đối với tất cả nhật ký có :

  • log.tag.<tag>
  • persist.log.tag.<tag>

Đối với tất cả nhật ký trong hệ thống:

  • log.tag
  • persist.log.tag

Để chọn cấp độ nhật ký đã chọn (được kiểm tra theo thứ tự), bạn có thể đặt mỗi giá trị thành V, D, I, W hoặc E.

Cấp độ nhật ký hiệu quả là cấp độ được đặt trên thuộc tính hệ thống đầu tiên có giá trị, có thể thấp hơn hoặc cao hơn cấp độ nhật ký do ứng dụng đặt bằng lệnh gọi __android_log_set_minimum_priority. Khi không có thuộc tính nào được đặt, cấp được định cấu hình bằng __android_log_set_minimum_priority sẽ áp dụng.

Để biết thông tin chi tiết, hãy xem phần Tổng quan về hệ thống ghi nhật ký.

  • Chạy mẫu, đặt thẻ nhật ký mặc định thành example_tag:

    LOGTAG=example_tag log_filtering_sdv_sample
    

Mẫu này cũng chứa một định nghĩa macro LOG_TAG được đánh dấu là nội dung nhận xét mà bạn có thể dùng để đặt thẻ nhật ký cho tất cả thông điệp nhật ký. Thẻ được đặt theo cách này sẽ ghi đè thẻ được đặt trong thời gian chạy bằng __android_log_set_default_tag.

Nếu macro LOG_TAG không được xác định và ứng dụng không gọi __android_log_set_default_tag, thì thẻ mặc định sẽ là kết quả của getprogname(). Ví dụ: tên tệp thực thi.