ตอนนี้ Android Automotive (AAOS) รองรับการใช้งานเป็นระบบปฏิบัติการเสมือน (VM) สำหรับผู้เข้าร่วมในสภาพแวดล้อมที่เข้ากันได้กับมาตรฐาน VirtIO ผ่านผลิตภัณฑ์ใหม่ชื่อ trout trout อิงตามแพลตฟอร์มอ้างอิงเสมือนจริงของ Cuttlefish และพร้อมใช้งานเป็นการกำหนดค่าอุปกรณ์ trout ดูซอร์สโค้ดของ userspace ได้ที่ device/google/trout ตารางด้านล่างอธิบายเทคโนโลยีที่ใช้เพื่อจำลองระบบย่อยแต่ละระบบใน trout
| ฟีเจอร์ | เทคโนโลยี |
|---|---|
| HAL การควบคุมเสียง | vsock/gRPC |
| Audio HAL | virtio-snd |
| บลูทูธ | virtio-console |
| Dumpstate HAL | vsock/gRPC |
| Extended View System (EVS) | virtio-video |
| โหมดโรงรถ | vsock/gRPC |
| กราฟิก | virtio-gpu |
| ระบบนำทางด้วยดาวเทียมทั่วโลก (GNSS) | virtio-console |
| Sensor HAL 2.0 | virtio-scmi and IIO |
| อินพุตหน้าจอสัมผัส | virtio-input |
| HAL ยานพาหนะ | vsock/gRPC |
ขยายเวลา
trout ใช้เป็นจุดเริ่มต้นในการสร้างเป้าหมายใหม่สำหรับสาระบันเทิงในรถ (IVI) ของ Android ได้ โครงสร้างพื้นฐานการสร้างได้รับการออกแบบให้ขยายและปรับแต่งได้
เช่น
# 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 เหล่านี้ (รวมถึง HAL ของยานพาหนะ HAL การควบคุมเสียง และ HAL ของ Dumpstate) ติดตั้งใช้งานผ่านอินเทอร์เฟซ gRPC ที่รองรับvsockการเชื่อมต่อระหว่างผู้ใช้ชั่วคราว AAOS กับระบบโฮสต์ที่ให้บริการใช้งานฟีเจอร์พื้นฐาน คุณต้องกําหนดค่าโดยใช้พารามิเตอร์การเชื่อมต่อ vsock ที่ถูกต้องเป็นพร็อพเพอร์ตี้ของผู้ให้บริการ โค้ดต้นฉบับจะทำหน้าที่เป็นข้อมูลพื้นฐานที่แท้จริงเกี่ยวกับพร็อพเพอร์ตี้ที่ใช้กำหนดค่าได้และความหมายของพร็อพเพอร์ตี้เหล่านั้น
สร้าง trout
คอมไพล์พื้นที่ผู้ใช้
วิธีคอมไพล์พื้นที่ผู้ใช้
- ดาวน์โหลดซอร์สโค้ด 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
สร้างเคอร์เนล
สำหรับ trout 1.1 ฐานโค้ดเคอร์เนลจะอยู่ใน AOSP เคอร์เนล trout
ประกอบด้วยโค้ดเดียวกับ ACK 5.10 เวอร์ชัน upstream พร้อมเพิ่มข้อบังคับเฉพาะ 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 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 ต่อไปนี้ทราบว่ามีการทดสอบไม่ผ่าน
| การทดสอบโปรแกรมเปิดรถ การทดสอบผู้ลงโฆษณาบลูทูธพลังงานต่ำ (BLE) โปรแกรมตรวจสอบคุณภาพวิดีโอสตรีมมิง การทดสอบอุปกรณ์ HID ของบลูทูธ การทดสอบไมโครโฟนอัลตร้าซาวด์ HiFi การทดสอบลำโพงอัลตร้าซาวด์ HiFi |
การทดสอบที่ต้องปลดล็อกอุปกรณ์ การทดสอบการตรวจหาเซ็นเซอร์แบบไดนามิก การทดสอบเซ็นเซอร์นอกร่างกาย การทดสอบการเคลื่อนไหวที่สำคัญ การทดสอบการแจ้งเตือนการกำหนดเส้นทางเอาต์พุตเสียง การทดสอบคําขอหรือคําแนะนําเครือข่าย |
บันทึกประจำรุ่น
trout 1.1 มีปัญหาที่ทราบดังต่อไปนี้
- บิลด์สำหรับผู้ใช้ของ
troutไม่พร้อมใช้งาน ระบบสร้างขึ้นเป็น-userdebugซึ่งอาจส่งผลต่อการทดสอบ CTS บางรายการ - ไม่รองรับการบูตที่ตรวจสอบแล้วของ Android (AVB)
- ระบบย่อยบางอย่างของ Android อาจไม่พร้อมใช้งาน ซึ่งรวมถึง Secure World และ NNHAL
- โดยทั่วไปแล้ว สิทธิ์เข้าถึงเครือข่ายสำหรับผู้มาเยือนจะให้บริการผ่านอะแดปเตอร์ Wi-Fi เสมือนจริงและ
virtio-netอุโมงค์ การเชื่อมต่อฝั่งโฮสต์ขึ้นอยู่กับการใช้งานไฮเปอร์วิซอร์ของคุณ - การติดตั้งใช้งานบางอย่างอาจให้ความสามารถของบลูทูธแบบจํากัดหรือไม่มีเลย
- การส่งผ่านเหตุการณ์ VHAL อาจใช้ไม่ได้กับเซ็นเซอร์บางรุ่น
- ภาระงานบางอย่างที่หนักมากอาจทำให้การเล่นเสียงขัดข้อง
- ในการใช้งานบางกรณี การรีบูต adb ของผู้มาเยือน AAOS อาจรีบูตทั้งระบบ
- STS อาจทําให้ระบบไม่เสถียรและต้องมีการรีบูต
ดูรายละเอียดเพิ่มเติมได้ในบันทึกประจำรุ่นของพาร์ทเนอร์สำหรับการติดตั้งใช้งาน trout ของคุณ