تتيح لك عينات التعليمات البرمجية لخدمات SDV Core في /system/software_defined_vehicle/samples بدء إنشاء خدماتك. يحتوي كل نموذج على ملف README
يصف حالة الاستخدام.
نظرة عامة على دليل النماذج
يسرد الجدول التالي أدلة النماذج المرجعية في
system/software_defined_vehicle/samples وأدلة المستندات
المقابلة لها:
| دليل العيّنات | الوصف | دليل المستندات |
|---|---|---|
system/software_defined_vehicle/samples/quickstart |
نموذج لحزمة خدمات Rust شاملة يعرض نشر VSIDL والاشتراك وRPC بين حزمتَي Manager وMonitor.
|
البدء السريع: إنشاء حِزم خدمات 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 من المصنّع الأصلي للجهاز |
system/software_defined_vehicle/samples/sdv_gateway |
نماذج تطبيقات IVI الأصلية وتطبيقات Java (NativeSdvGatewayTestApp
وSdvCarMonitorTestApp) التي تتواصل مع خدمات SDV Core
من خلال SDV Gateway
|
استخدام SDV Gateway على نظام المعلومات والترفيه داخل المركبة (IVI) |
system/software_defined_vehicle/samples/telemetry |
مصدر بيانات القياس عن بُعد على الجهاز فقط ونماذج المحاكاة | مصادر البيانات |
استخدام واجهة برمجة التطبيقات Logging API
لمزيد من المعلومات حول التعليمات المقدَّمة، يُرجى الاطّلاع على ما يلي:
نموذج سجلّ أساسي
logging.cpp يمثّل الكتابة في المخازن المؤقتة main وsystem وradio.
للاطّلاع على وصف موجز لمخازن السجلّات المؤقتة المتاحة، يُرجى مراجعة عرض مخازن السجلّات المؤقتة البديلة.
لتشغيل النموذج بدون السجلات الشرطية، مثل
ALOGI_IF:logging_sdv_sampleلتشغيل النموذج وطباعة السجلات الشرطية، مثل
ALOGI_IF:LOGIF=1 logging_sdv_sample
نموذج التسجيل المنظَّم
نموذج الملف: structured_logging.cpp
لتشغيل النموذج الذي يكتب السجلات في مخزن سجلات
eventsالمؤقت:structured_logging_sdv_sample
تحتوي مخازن السجلات المؤقتة event وsecurity وstats على بيانات منظَّمة بدلاً من النص الحر.
يتم تسجيل البيانات المنظَّمة باستخدام واجهة برمجة التطبيقات لقائمة الأحداث، والتي يتم تسجيلها دائمًا باستخدام
الأولوية 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(). على سبيل المثال، اسم الملف القابل للتنفيذ.