参考平台

通过一个名为 trout 的新产品,Android Automotive (AAOS) 现在支持在符合 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

您可以将 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 ...]

多个 Android HAL 可单独替换为自定义实现,也可保留默认实现,但应调整某些配置参数,以在目标环境中建立适当的虚拟机间通信。这些 HAL(包括车载 HAL、音频控制 HAL 和转储状态 HAL)是通过 gRPC 接口实现的,该接口由 AAOS 客户机与提供底层功能实现的主机系统之间的 vsock 连接提供支持。必须通过提供适当的 vsock 连接参数作为供应商属性来配置这些 HAL。

构建 trout

编译用户空间

如需编译用户空间,请执行以下操作:

  1. 下载 Android 源代码树:
    repo init -u https://android.googlesource.com/platform/manifest -b master
    repo sync -j8
    
  2. 构建环境:
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

构建内核

对于 trout 1.0,内核代码库在 AOSP 中提供。trout 内核由与上游 ACK 5.10 相同的代码组成,并为 VirtIO 子系统添加了特定于 trout 的模块。

  1. 如需克隆内核,请运行以下命令:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. 如需为 OpenSynergy 环境构建内核,请运行以下命令:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

合规性

当 AAOS 作为客户机虚拟机运行时,我们的目标是从框架角度实现兼容的 Android 部署。主机端问题在每个实现的范围内,不在 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 Ultrasound 麦克风测试
Hifi Ultrasound 扬声器测试
已解锁设备所需的测试
动态传感器发现测试
离身传感器测试
大幅动作测试
音频输出路由通知测试
网络请求或建议测试

版本说明

trout 1.0 包含以下已知问题:

  • trout 的用户 build 不可用。系统构建为 -userdebug,这可能会影响某些 CTS 测试。
  • trout 1.0 不支持访问 TrustZone for Android。
  • 不支持 Android Verified Boot (AVB)。
  • trout 1.0 中,神经加速器没有提供给 NNAPI。
  • Wi-Fi 虚拟化不可用,有些实现可为“virtio-net”隧道提供有限的支持。
  • 在某些情况下,通过 Android 调试桥 (ADB) 将大型文件从 Android 传输到其他平台或向 Android 传输时,可能会导致系统挂起。
  • 在某些情况下,短信应用可能会停止与配对的蓝牙手机同步。
  • VHAL 事件注入可能不适用于某些传感器。
  • 底层 SoC 的 ADB 序列号不会作为客户机的 ADB 序列号转发到 Android。
  • 在某些实现中,主机可能无法使用以太网连接到网络。

如需了解更多详情,请参阅有关您的具体 trout 部署的合作伙伴版本说明。