المنصة المرجعية

من خلال منتج جديد باسم trout، يقدّم نظام التشغيل Android Automotive (AAOS) الآن دعمًا للنشر كجهاز افتراضي ضيف (VM) في البيئات المتوافقة مع معيار VirtIO. يستند trout إلى منصّة مرجعية افتراضية تدعى Cuttlefish ، وهو متاح كإعدادات جهاز trout. يمكن العثور على رمز مصدر مساحة المستخدم على الرابط device/google/trout. يصف الجدول التالي التكنولوجيا المستخدَمة لإنشاء محاكاة افتراضية لكل نظام فرعي في trout.

الميزة تكنولوجيا
واجهة برمجة التطبيقات لنظام التحكّم في الصوت vsock/gRPC
Audio HAL virtio-snd
البلوتوث virtio-console
Dumpstate HAL vsock/gRPC
نظام العرض الموسّع (EVS) virtio-video
وضع المرآب vsock/gRPC
الرسومات virtio-gpu
نظام تحديد المواقع العالمي بالاقمار الصناعية (GNSS) virtio-console
Sensor HAL 2.0 virtio-scmi and IIO
إدخال الشاشة التي تعمل باللمس virtio-input
Vehicle HAL vsock/gRPC

تمديد سمك السلمون المرقط

يمكن استخدام trout كنقطة بداية لإنشاء استهدافات جديدة لنظام Android في أنظمة الترفيه والمعلومات داخل المركبات (IVI). تم تصميم البنية الأساسية للإنشاء بحيث يمكن تمديدها وتخصيصها. مثلاً:

# Inherit trout-arm64 default values and settings
$(call inherit-product, device/google/trout/aosp_trout_arm64.mk)

# Customize HALs as needed
LOCAL_VHAL_PRODUCT_PACKAGE := vendor.oem.vhal@2.0-service
LOCAL_AUDIO_PRODUCT_PACKAGE := vendor.oem.audio@6.0-impl

# Configure SELinux policy
BOARD_SEPOLICY_DIRS += device/oem/car/sepolicy/vendor/oem

# Configure properties
LOCAL_DUMPSTATE_PROPERTIES := \
    ro.vendor.dumpstate.server.cid=22 \
    ro.vendor.dumpstate.server.port=406 \
    ro.vendor.helpersystem.log_loc=/data/dumpstate

[... and more as needed ...]

يمكن استبدال العديد من واجهات برمجة التطبيقات لنظام HAL في Android بشكلٍ فردي بعمليات تنفيذ مخصّصة، أو الحفاظ على عمليات التنفيذ التلقائية مع تعديل بعض مَعلمات الضبط لإنشاء اتصال سليم بين الأجهزة الافتراضية في البيئة المستهدَفة. يتم تنفيذ واجهات HAL هذه (بما في ذلك Vehicle HAL و Audio Control HAL وDumpstate HAL) من خلال واجهة gRPC مدعومة بربط vsock بين نظام التشغيل الضيف AAOS والنظام المضيف الذي يقدّم تنفيذ الميزة الأساسية. ويجب ضبط هذه الإعدادات من خلال تقديم vsock مَعلمات الاتصال المناسبة كخصائص المورّد. يعمل الرمز المصدر بمثابة الحقيقة الأساسية التي تحدّد المواقع التي تتوفّر لها إمكانية الضبط ودلالاتها.

إنشاء سمك السلمون المرقط

تجميع مساحة المستخدم

لتجميع مساحة المستخدم:

  1. نزِّل شجرة مصدر Android:
    repo init -u https://android.googlesource.com/platform/manifest -b main
    repo sync -j8
    
  2. أنشئ البيئة:
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

إنشاء النواة

بالنسبة إلى الإصدار 1.1 من trout، يتم توفير قاعدة بيانات رمز kernel في AOSP. يتألّف نواة trout من الرمز نفسه المستخدَم في الإصدار 5.10 من ACK، بالإضافة إلى وحدات خاصة بنظام التشغيل trout للأنظمة الفرعية VirtIO.

  1. لنسخ نواة النظام، شغِّل:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. لإنشاء نواة التشغيل:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

قد يطلب موفّر نظام التشغيل الظاهري إعدادًا مختلفًا للنواة أو وحدات إضافية يجب تجميعها. احرص على اتّباع هذه الإرشادات المحدّدة، إذا تم تقديمها.

الامتثال

عند تشغيل AAOS كجهاز افتراضي ضيف، هدفنا هو أن يكون الإصدار متوافقًا مع Android من ناحية الإطار العمل. إنّ المشاكل على جانب المضيف هي من اختصاص كل عملية تنفيذ وخارج نطاق trout 1.1.

لم نُجري عملية تحقّق إضافية من xTS في الإصدار trout 1.1. يُرجى المتابعة للاطّلاع على المناقشة أدناه حول توافق CTS في الإصدار trout 1.0.

في الإصدار 1.0 من trout، لا تزال هناك عدة مشاكل في CTS. من المعروف أنّ وحدات CTS التالية تتضمّن حالات تعذُّر الاختبار:

CtsStagedInstallHostTestCases
CtsRollbackManagerHostTestCases
CtsVideoTestCases
CtsHostsideNetworkTests
CtsActivityManagerBackgroundActivityTestCases
CtsAdbHostTestCases
CtsNativeHardwareTestCases
CtsContentTestCases
CtsCarHostTestCases
CtsOsTestCases
CtsStatsdHostTestCases
CtsVoiceInteractionTestCases
CtsViewTestCases
CtsCameraTestCases
CtsLocationGnssTestCases
CtsGraphicsTestCases
CtsIncidentHostTestCases
CtsInstallHostTestCases
CtsNativeVerifiedBootTestCases
CtsNetTestCases
CtsWindowManagerDeviceTestCases
CtsMediaStressTestCases
CtsAppTestCases
CtsUsbTests
CtsAutoFillServiceTestCases
CtsDisplayTestCases
CtsMediaTestCases
CtsDeqpTestCases
CtsDumpsysHostTestCases
CtsOpenGLTestCasesCtsLibcoreTestCases
CtsSecurityHostTestCases
CtsInputMethodTestCases
CtsStatsdAtomHostTestCases
CtsPermission4TestCases
CtsNNAPIBenchmarkTestCases
CtsSimpleperfTestCases
CtsAccessibilityTestCases
CtsAppSecurityHostTestCases
CtsKeystoreTestCases

من المعروف أنّ مناطق CTS-V التالية تتضمّن حالات تعذُّر اجتياز الاختبار:

اختبار مشغّل السيارة
الاختبار الخاص بالمعلِنين الذين يستخدمون تقنية Bluetooth منخفضة الطاقة (BLE)
أداة التحقّق من جودة الفيديوهات البث
الاختبار الخاص بجهاز HID عبر البلوتوث
الاختبار الخاص بجودة الميكروفون الصوتي الفائق الجودة
الاختبار الخاص بجودة مكبّر الصوت الصوتي الفائق الجودة
اختبار الجهاز غير المقفل
الاختبار الخاص باكتشاف أداة الاستشعار الديناميكية
الاختبار الخاص بأداة الاستشعار التي لا تكون على الجسم
الاختبار الخاص بالحركة الكبيرة
الاختبار الخاص بإشعار توجيه إخراج الصوت
الاختبار الخاص بطلب الشبكة أو الاقتراح

ملاحظات الإصدار

تتضمّن الإصدار trout 1.1 المشاكل المعروفة التالية:

  • لا تتوفّر إصدارات المستخدمين من trout. تم تصميم النظام على أنّه -userdebug، ما قد يؤثر في بعض اختبارات CTS.
  • ميزة "التمهيد التحقق من Android" (AVB) غير متاحة.
  • قد لا تكون بعض الأنظمة الفرعية لنظام Android متاحة، بما في ذلك "الوضع الآمن" وNNHAL.
  • يتم توفير إمكانية الوصول إلى شبكة الضيوف بشكل عام من خلال محوِّل Wi-Fi افتراضي و نفق virtio-net. يعتمد الاتصال من جهة المضيف على عملية نشر نظام التشغيل الافتراضي المحدّدة.
  • قد توفّر بعض عمليات التنفيذ إمكانية استخدام البلوتوث بشكل محدود أو لا توفّرها على الإطلاق.
  • قد لا تعمل ميزة "إدخال أحداث VHAL" مع بعض أدوات الاستشعار.
  • يمكن أن تؤدي بعض أعباء العمل الثقيلة إلى حدوث أعطال في تشغيل الصوت.
  • في بعض عمليات التنفيذ، قد تؤدي إعادة التشغيل باستخدام adb لضيف AAOS إلى إعادة تشغيل النظام بالكامل.
  • يمكن أن يؤدي STS إلى عدم استقرار النظام ويتطلّب إعادة تشغيله.

للحصول على تفاصيل إضافية، يُرجى الرجوع إلى ملاحظات الإصدار المخصّصة للشركاء لنشر trout.