پلت فرم مرجع

اندروید اتوموتیو (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 مناسب به عنوان ویژگی‌های فروشنده پیکربندی شوند. کد منبع به عنوان حقیقت نهایی عمل می‌کند که در آن ویژگی‌ها برای پیکربندی و معانی آنها در دسترس هستند.

ماهی قزل آلا بسازید

کامپایل فضای کاربری

برای کامپایل کردن فضای کاربری:

  1. دانلود سورس درختی اندروید:
    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
    

ممکن است تأمین‌کننده‌ی هایپروایزر شما پیکربندی هسته‌ی متفاوتی یا ماژول‌های اضافی مورد نیاز برای کامپایل داشته باشد. در صورت ارائه، حتماً این راهنمای خاص را دنبال کنید.

انطباق

وقتی 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 خود مراجعه کنید.