من خلال منتج جديد يُسمى 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
المناسبة كخصائص البائع. تعمل التعليمات البرمجية المصدر بمثابة الحقيقة الأساسية النهائية التي تتوفر عليها الخصائص للتكوين ودلالاتها.
بناء سمك السلمون المرقط
تجميع مساحة المستخدم
لتجميع مساحة المستخدم:
- قم بتنزيل شجرة مصدر Android:
repo init -u https://android.googlesource.com/platform/manifest -b main repo sync -j8
- بناء البيئة:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
بناء النواة
بالنسبة للإصدار 1.1 trout
السلمون المرقط، يتم توفير قاعدة بيانات النواة في AOSP. تتكون نواة trout
من نفس الكود الموجود في ACK 5.10، مع إضافة وحدات خاصة trout
لأنظمة VirtIO الفرعية.
- لاستنساخ النواة، قم بتشغيل:
repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
- لبناء تشغيل النواة:
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
الخاص بك.