Благодаря новому продукту под названием 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
в качестве свойств поставщика. Исходный код выступает в качестве окончательной истины о том, какие свойства доступны для настройки и их семантика.
Построить форель
Скомпилируйте пользовательское пространство
Чтобы скомпилировать пользовательское пространство:
- Загрузите дерево исходного кода 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, с добавлением специфичных 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 работает как гостевая виртуальная машина, наша цель — обеспечить совместимое развертывание 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
.