Эталонная платформа

Благодаря новому продукту под названием trout Android Automotive (AAOS) теперь обеспечивает поддержку развертывания в качестве гостевой виртуальной машины (ВМ) в средах, совместимых со стандартом VirtIO . trout основан на виртуальной эталонной платформе Cuttlefish и доступен в виде конфигурации устройства trout . Исходный код пользовательского пространства можно найти по device/google/trout . В таблице ниже описаны технологии, используемые для виртуализации каждой из подсистем в trout .

Особенность Технология
Звуковое управление HAL vsock/gRPC
Аудио ХАЛ virtio-snd
Bluetooth virtio-console
Дампстейт HAL vsock/gRPC
Система расширенного обзора (EVS) virtio-video
Режим гаража vsock/gRPC
Графика virtio-gpu
Глобальная навигационная спутниковая система (ГНСС) virtio-console
Датчик ХАЛ 2.0 virtio-scmi and IIO
Сенсорный ввод virtio-input
Автомобиль ХАЛ vsock/gRPC

Расширить форель

trout можно использовать в качестве отправной точки для создания новых систем Android для бортовой информационно-развлекательной системы (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 ...]

Несколько Android HAL можно индивидуально заменить пользовательскими реализациями или сохранить реализации по умолчанию, но скорректировать определенные параметры конфигурации для установления правильного взаимодействия между виртуальными машинами в целевой среде. Эти HAL (включая HAL транспортного средства, HAL управления звуком и HAL Dumpstate) реализуются посредством интерфейса gRPC, поддерживаемого соединением vsock между гостем AAOS и хост-системой, обеспечивающей реализацию базовой функции. Их необходимо настроить путем предоставления правильных параметров соединения vsock в качестве свойств поставщика. Исходный код выступает в качестве окончательной истины о том, какие свойства доступны для настройки и их семантика.

Построить форель

Скомпилируйте пользовательское пространство

Чтобы скомпилировать пользовательское пространство:

  1. Загрузите дерево исходного кода Android:
    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 работает как гостевая виртуальная машина, наша цель — обеспечить совместимое развертывание Android с точки зрения платформы. Проблемы на стороне хоста входят в компетенцию каждой реализации и выходят за рамки trout 1.1.

Мы не проводили дополнительную проверку xTS для trout 1.1. Продолжайте обращаться к приведенному ниже обсуждению поддержки CTS в trout 1.0.

В trout 1.0 осталось несколько проблем с CTS. Известно, что следующие модули CTS содержат неудачные тесты:

CtsStagedInstallHostTestCases
CtsRollbackManagerHostTestCases
CtsВидеоТестовыеКейсы
CtsHostsideNetworkТесты
CtsActivityManagerBackgroundActivityTestCases
CtsAdbHostTestCases
CtsNativeАппаратное обеспечениеТестовые случаи
CtsContentTestCase
CtsCarHostТестСлучаи
CtsOsTestCases
CtsStatsdHostTestCases
CtsVoiceInteractionTestCases
CtsViewTestCases
CtsКамераТестКейсы
CtsLocationGnssTestСлучаи
CtsГрафикаТестКейсы
CtsIncidentHostTestCases
CtsInstallHostTestCases
CtsNativeVerifiedBootTestСлучаи
CtsNetTestCases
CtsWindowManagerDeviceTestCases
CtsMediaСтрессТестСлучаи
CtsAppTestCase
CtsUsbTests
CtsAutoFillServiceTestCases
CtsDisplayTestCases
CtsMediaTestКейсы
CtsDeqpTestCases
CtsDumpsysHostTestCases
CtsOpenGLTestCasesCtsLibcoreTestCases
CtsSecurityHostTestCases
CtsInputMethodTestCases
CtsStatsdAtomHostTestCases
CtsPermission4TestCase
CtsNNAPIBenchmarkТест-кейсы
CtsSimpleperfTestCases
CtsAccessibilityТестовые случаи
CtsAppSecurityHostTestCases
CtsKeystoreTestCase

Известно, что следующие области CTS-V включают неудачные тесты:

Тест автомобильной пусковой установки
Тест рекламодателя Bluetooth Low Energy (BLE)
Средство проверки качества потокового видео
Тест устройства Bluetooth HID
Тест ультразвукового микрофона Hi-Fi
Тест ультразвукового динамика Hi-Fi
Тест «Требуется разблокированное устройство»
Тест обнаружения динамических датчиков
Тест датчика вне тела
Тест на значительное движение
Тест уведомления о маршрутизации аудиовыхода
Тест сетевого запроса или предложения

Примечания к выпуску

trout 1.1 содержит следующие известные проблемы:

  • Пользовательские сборки trout недоступны. Система построена как -userdebug , что может повлиять на некоторые тесты CTS.
  • Android Verified Boot (AVB) не поддерживается.
  • Некоторые подсистемы Android могут быть недоступны, в том числе Secure World и NNHAL.
  • Доступ к гостевой сети обычно обеспечивается посредством виртуализированного адаптера Wi-Fi и туннеля virtio-net . Возможность подключения на стороне хоста зависит от конкретного развертывания вашего гипервизора.
  • Некоторые реализации могут предлагать ограниченные возможности Bluetooth или вообще не предлагать их вообще.
  • Внедрение событий VHAL может не работать для некоторых датчиков.
  • Некоторые тяжелые рабочие нагрузки могут вызывать сбои при воспроизведении звука.
  • В некоторых реализациях перезагрузка гостя AAOS через adb может перезагрузить всю систему.
  • STS может вызвать нестабильность системы и потребовать перезагрузки.

Дополнительные сведения см. в примечаниях к выпуску для партнеров для вашего конкретного развертывания trout .