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

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

الميزة تكنولوجيا
Audio Control HAL 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`

يمكن استخدام 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 ...]

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

إنشاء `trout`

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

لتجميع مساحة المستخدم، اتّبِع الخطوات التالية:

  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
    

إنشاء النواة

بالنسبة إلى trout 1.1، يتم توفير قاعدة رموز النواة في AOSP. تتألف نواة trout من الرمز نفسه الذي يتألف منه ACK 5.10، بالإضافة إلى وحدات خاصة بـ 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
    

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

الامتثال

عندما يتم تشغيل AAOS كآلة افتراضية للضيف، هدفنا هو أن يكون نشر Android متوافقًا من منظور الإطار. تندرج المشاكل من جهة المضيف ضمن نطاق كل عملية تنفيذ وخارج نطاق trout 1.1.

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

في trout 1.0، لا تزال هناك عدة مشاكل في 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 التالية تتضمّن حالات فشل في الاختبارات:

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

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

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

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

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