منصة مرجعية

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

ميزة تكنولوجيا
التحكم في الصوت هال vsock/gRPC
الصوت هال virtio-snd
بلوتوث virtio-console
Dumpstate HAL vsock/gRPC
نظام العرض الممتد (EVS) virtio-video
وضع المرآب vsock/gRPC
الرسومات virtio-gpu
النظام العالمي للملاحة عبر الأقمار الصناعية (GNSS) virtio-console
الاستشعار هال 2.0 virtio-scmi and IIO
إدخال شاشة تعمل باللمس virtio-input
مركبة هال 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 ...]

يمكن استبدال العديد من HALs لنظام Android بشكل فردي بتطبيقات مخصصة، أو الحفاظ على التطبيقات الافتراضية مع تعديل معلمات تكوين معينة لإنشاء اتصال مناسب بين الأجهزة الافتراضية في البيئة المستهدفة. يتم تنفيذ HALs هذه (بما في ذلك HAL للمركبة، و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 السلمون المرقط، يتم توفير قاعدة بيانات النواة في 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 الخاص بك تكوين kernel مختلف مطلوب أو وحدات إضافية تحتاج إلى تجميع. تأكد من اتباع هذه الإرشادات المحددة، إذا تم توفيرها.

امتثال

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

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

في الإصدار 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
اختبار الميكروفون بالموجات فوق الصوتية Hifi
اختبار مكبر الصوت بالموجات فوق الصوتية Hifi
مطلوب اختبار الجهاز غير المؤمن
اختبار اكتشاف المستشعر الديناميكي
اختبار خارج الجسم الاستشعار
اختبار الحركة الهامة
اختبار إعلام توجيه إخراج الصوت
اختبار طلب الشبكة أو الاقتراح

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

يحتوي trout 1.1 على المشكلات المعروفة التالية:

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

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