از طریق یک محصول جدید به نام trout
، Android Automotive (AAOS) اکنون از استقرار به عنوان ماشین مجازی مهمان (VM) در محیطهای سازگار با استاندارد VirtIO پشتیبانی میکند. trout
بر اساس پلت فرم مرجع مجازی Cuttlefish است و به عنوان پیکربندی دستگاه trout
در دسترس است. کد منبع فضای کاربران را میتوانید در device/google/trout
پیدا کنید. جدول زیر فناوری مورد استفاده برای مجازی سازی هر یک از زیرسیستم ها در trout
را توضیح می دهد.
ویژگی | تکنولوژی |
---|---|
کنترل صوتی HAL | vsock/gRPC |
HAL صوتی | virtio-snd |
بلوتوث | virtio-console |
زباله دان HAL | vsock/gRPC |
سیستم دید گسترده (EVS) | virtio-video |
حالت گاراژ | vsock/gRPC |
گرافیک | virtio-gpu |
سیستم ماهواره ای ناوبری جهانی (GNSS) | virtio-console |
سنسور HAL 2.0 | virtio-scmi and IIO |
ورودی صفحه لمسی | virtio-input |
HAL وسیله نقلیه | vsock/gRPC |
ماهی قزل آلا را گسترش دهید
trout
می توان به عنوان نقطه شروع برای ایجاد اهداف اندرویدی جدید In-Vehicle Infotainment (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 را میتوان بهصورت جداگانه با پیادهسازیهای سفارشی جایگزین کرد، یا پیادهسازیهای پیشفرض را حفظ کرد، اما پارامترهای پیکربندی خاصی را برای برقراری ارتباط بین VM مناسب در محیط هدف تنظیم کرد. این HALها (شامل Vehicle HAL، Audio Control HAL و Dumpstate HAL) با استفاده از یک رابط gRPC که توسط یک اتصال vsock
بین مهمان AAOS و یک سیستم میزبان که اجرای ویژگی اساسی را ارائه میکند، پیادهسازی میشوند. اینها باید با ارائه پارامترهای اتصال vsock
مناسب به عنوان ویژگی های فروشنده پیکربندی شوند. کد منبع به عنوان حقیقت پایه ای نهایی عمل می کند که ویژگی ها برای پیکربندی و معنای آنها در دسترس هستند.
ساخت قزل آلا
فضای کاربران را کامپایل کنید
برای کامپایل فضای کاربری:
- درخت منبع اندروید را دانلود کنید:
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
هسته را بسازید
برای trout
1.1، پایگاه کد هسته در 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
تامین کننده هایپروایزر شما ممکن است پیکربندی هسته دیگری مورد نیاز یا ماژول های اضافی داشته باشد که باید کامپایل شوند. در صورت ارائه، حتماً از این راهنمایی خاص پیروی کنید.
انطباق
هنگامی که AAOS به عنوان یک VM مهمان اجرا می شود، هدف ما این است که از منظر چارچوب یک استقرار Android سازگار باشد. مسائل جانبی میزبان در حوزه هر اجرا و خارج از محدوده trout
1.1 است.
ما اعتبار سنجی xTS اضافی را در trout
1.1 انجام نداده ایم. به بحث زیر در مورد پشتیبانی CTS در trout
1.0 مراجعه کنید.
در trout
1.0، چندین مشکل CTS باقی مانده است. ماژولهای CTS زیر شامل خطاهای تست میشوند:
CtsStagedInstallHostTestCases CtsRollbackManagerHostTestCases CtsVideoTestCases CtsHostsideNetworkTests CtsActivityManager BackgroundActivityTestCases 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 CtsNNAPIBBenchmarkTestCases CtsSimpleperfTestCases CtsAccessibilityTestCases CtsAppSecurityHostTestCases CtsKeystoreTestCases |
مناطق CTS-V زیر شامل خرابی های تست می شوند:
تست پرتاب خودرو تست آگهی دهنده بلوتوث کم مصرف (BLE). تأیید کننده کیفیت پخش جریانی ویدیو تست دستگاه بلوتوث HID تست میکروفون اولتراسوند Hifi تست اسپیکر سونوگرافی Hifi | تست مورد نیاز دستگاه باز شده تست کشف سنسور دینامیک تست سنسور خارج از بدن تست حرکت مهم تست اعلان مسیریابی خروجی صدا تست درخواست یا پیشنهاد شبکه |
یادداشت های انتشار
trout
1.1 شامل مسائل شناخته شده زیر است:
- ساخت کاربر از
trout
در دسترس نیست. این سیستم بهعنوان-userdebug
ساخته شده است که میتواند بر برخی آزمایشهای CTS تأثیر بگذارد. - Android Verified Boot (AVB) پشتیبانی نمیشود.
- ممکن است برخی از زیرسیستمهای Android از جمله دنیای امن و NNHAL در دسترس نباشند.
- دسترسی به شبکه مهمان عموماً با استفاده از یک آداپتور Wi-Fi مجازی و یک تونل
virtio-net
ارائه می شود. اتصال سمت میزبان به استقرار هایپروایزر خاص شما بستگی دارد. - برخی از پیاده سازی ها ممکن است قابلیت بلوتوث محدود یا بدون آن را ارائه دهند.
- تزریق رویداد VHAL ممکن است برای برخی از سنسورها کار نکند.
- برخی از بارهای کاری سنگین می تواند باعث اختلال در پخش صدا شود.
- در برخی از پیاده سازی ها، راه اندازی مجدد adb مهمان AAOS ممکن است کل سیستم را راه اندازی مجدد کند.
- STS می تواند باعث بی ثباتی سیستم شود و نیاز به راه اندازی مجدد داشته باشد.
برای جزئیات بیشتر، به یادداشت های انتشار شریک برای استقرار خاص trout
مراجعه کنید.