اندروید اتوموتیو (AAOS) اکنون از طریق محصول جدیدی به نام trout ، پشتیبانی از استقرار به عنوان یک ماشین مجازی مهمان (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 میتواند به عنوان نقطه شروع برای ایجاد تارگتهای جدید اندروید برای سیستم اطلاعات و سرگرمی درون خودرو (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 اندروید را میتوان به صورت جداگانه با پیادهسازیهای سفارشی جایگزین کرد، یا پیادهسازیهای پیشفرض حفظ میشوند اما پارامترهای پیکربندی خاصی برای ایجاد ارتباط مناسب بین ماشینهای مجازی در محیط هدف تنظیم میشوند. این HALها (از جمله Vehicle HAL، Audio Control HAL و Dumpstate HAL) به وسیله یک رابط gRPC که توسط یک اتصال vsock بین مهمان AAOS و یک سیستم میزبان که پیادهسازی ویژگی اساسی را فراهم میکند، پشتیبانی میشود، پیادهسازی میشوند. این HALها باید با ارائه پارامترهای اتصال 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 به عنوان یک ماشین مجازی مهمان اجرا میشود، هدف ما این است که از دیدگاه چارچوب، یک پیادهسازی سازگار با اندروید باشد. مسائل مربوط به سمت میزبان، حوزه هر پیادهسازی است و خارج از محدوده trout 1.1 میباشد.
ما اعتبارسنجی xTS اضافی را روی trout 1.1 انجام ندادهایم. برای اطلاعات بیشتر به بحث زیر در مورد پشتیبانی CTS در trout 1.0 مراجعه کنید.
در trout 1.0، چندین مشکل CTS همچنان باقی مانده است. ماژولهای CTS زیر به دلیل داشتن خطاهای تست شناخته شدهاند:
| موارد آزمایشی CtsStagedInstallHost CtsRollbackManagerHostTestCases موارد تست ویدئوی Cts تستهای شبکه CtsHostside CtsActivityManagerBackgroundActivityTestCases موارد تست CtsAdbHost موارد تست سختافزار بومی Cts موارد آزمون محتوا Cts موارد تست CtsCarHost موارد تست CtsOs موارد تست میزبان CtsStatsd موارد آزمایشی تعامل CtsVoice موارد تست CtsView موارد تست دوربین Cts موارد تست موقعیت مکانی Gnss موارد تست CtsGraphics موارد آزمایش میزبان حادثه Cts موارد تست میزبان نصبشده Cts موارد تأیید شده بوت تست CtsNative موارد تست CtsNet | موارد آزمایش دستگاه CtsWindowManager موارد تست استرس CtsMedia موارد تست CtsApp تستهای CtsUsb موارد تست سرویس CtsAutoFill موارد تست نمایشگر Cts موارد تست CtsMedia موارد تست CtsDeqp موارد تست میزبان CtsDumpsys موارد تست CtsOpenGLT، موارد تست CtsLibcore موارد تست میزبان CtsSecurity موارد تست متد ورودی Cts موارد تست CtsStatsdAtomHost CtsPermission4TestCases موارد تست CtsNNAPIBenchmark موارد تست ساده و بینقص Cts موارد تست دسترسی Cts موارد تست میزبان CtsAppSecurity موارد تست CtsKeystore |
حوزههای CTS-V زیر به عنوان حوزههایی که شامل شکستهای آزمایشی میشوند، شناخته شدهاند:
| تست پرتاب خودرو تست تبلیغکننده بلوتوث کممصرف (BLE) تأییدکننده کیفیت ویدیوی استریمینگ تست دستگاه بلوتوث HID تست میکروفون اولتراسوند Hifi تست بلندگوهای اولتراسوند Hifi | دستگاه قفلگشاییشده، آزمون مورد نیاز تست کشف حسگر دینامیکی تست حسگر خاموش بودن بدنه آزمون حرکت قابل توجه تست اعلان مسیریابی خروجی صدا آزمون درخواست یا پیشنهاد شبکه |
یادداشتهای انتشار
trout 1.1 شامل مشکلات شناخته شده زیر است:
- نسخههای کاربری
troutدر دسترس نیستند. این سیستم با استفاده از-userdebug ساخته شده است که میتواند بر برخی از تستهای CTS تأثیر بگذارد. - بوت تأیید شده اندروید (AVB) پشتیبانی نمیشود.
- ممکن است برخی از زیرسیستمهای اندروید، از جمله secure world و NNHAL، در دسترس نباشند.
- دسترسی به شبکه مهمان معمولاً از طریق یک آداپتور وایفای مجازی و یک تونل
virtio-netارائه میشود. اتصال سمت میزبان به استقرار هایپروایزر خاص شما بستگی دارد. - برخی از پیادهسازیها ممکن است قابلیت بلوتوث محدود یا بدون قابلیت بلوتوث ارائه دهند.
- تزریق رویداد VHAL ممکن است برای برخی حسگرها کار نکند.
- برخی از حجمهای کاری سنگین میتوانند باعث ایجاد اشکالاتی در پخش صدا شوند.
- در برخی پیادهسازیها، راهاندازی مجدد adb از سیستم مهمان AAOS ممکن است کل سیستم را مجدداً راهاندازی کند.
- STS میتواند باعث ناپایداری سیستم شود و نیاز به راهاندازی مجدد داشته باشد.
برای جزئیات بیشتر، به یادداشتهای انتشار شریک برای استقرار خاص trout خود مراجعه کنید.