Dzięki nowemu produktowi o nazwie trout Android Automotive (AAOS) obsługuje teraz wdrożenie jako gościnna maszyna wirtualna w środowiskach zgodnych ze standardem VirtIO. trout jest oparty na
wirtualnej platformie referencyjnej
Cuttlefish i jest dostępny jako konfiguracja urządzenia trout. Kod źródłowy przestrzeni użytkownika znajdziesz w device/google/trout. Tabela poniżej opisuje technologię używaną do wirtualizacji każdego z podsystemów w trout.
| Funkcja | Technologia |
|---|---|
| Audio Control HAL | vsock/gRPC |
| Audio HAL | virtio-snd |
| Bluetooth | virtio-console |
| Dumpstate HAL | vsock/gRPC |
| Extended View System (EVS) | virtio-video |
| Tryb garażowy | vsock/gRPC |
| Grafika | virtio-gpu |
| Globalny system nawigacji satelitarnej (GNSS) | virtio-console |
| Sensor HAL 2.0 | virtio-scmi and IIO |
| Dane wejściowe z ekranu dotykowego | virtio-input |
| Vehicle HAL | vsock/gRPC |
Rozszerzanie trout
trout może służyć jako punkt początkowy do tworzenia nowych elementów docelowych Androida w samochodowych systemach multimedialnych (IVI). Infrastruktura kompilacji została zaprojektowana tak, aby można ją było rozszerzać i dostosowywać.
Przykład:
# 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 ...]
Kilka interfejsów HAL Androida można zastąpić implementacjami niestandardowymi lub zachować implementacje domyślne, ale dostosować niektóre parametry konfiguracji, aby zapewnić prawidłową komunikację między maszynami wirtualnymi w środowisku docelowym. Te interfejsy HAL (w tym interfejs HAL pojazdu, Audio Control HAL i Dumpstate HAL) są implementowane za pomocą interfejsu gRPC obsługiwanego przez połączenie vsock między gościem AAOS a systemem hosta, który zapewnia podstawową implementację funkcji. Należy je skonfigurować, podając odpowiednie parametry połączenia vsock jako właściwości dostawcy. Kod źródłowy jest ostatecznym źródłem informacji o tym, które właściwości są dostępne do konfiguracji i jakie jest ich znaczenie.
Kompilowanie trout
Kompilowanie przestrzeni użytkownika
Aby skompilować przestrzeń użytkownika:
- Pobierz drzewo źródłowe Androida:
repo init -u https://android.googlesource.com/platform/manifest -b main repo sync -j8
- Skompiluj środowisko:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
Kompilowanie jądra
W przypadku trout 1.1 baza kodu jądra jest dostępna w AOSP. Jądro trout
składa się z tego samego kodu co upstream ACK 5.10, z dodatkiem
trout-specyficznych modułów dla podsystemów VirtIO.
- Aby sklonować jądro, uruchom:
repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
- Aby skompilować jądro, uruchom:
BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
Dostawca hiperwizora może wymagać innej konfiguracji jądra lub dodatkowych modułów, które trzeba skompilować. W takim przypadku postępuj zgodnie z tymi wskazówkami.
Zgodność
Gdy AAOS działa jako gościnna maszyna wirtualna, naszym celem jest zapewnienie zgodnego wdrożenia Androida z perspektywy frameworka. Problemy po stronie hosta są domeną każdej implementacji i wykraczają poza zakres trout 1.1.
Nie przeprowadziliśmy dodatkowej weryfikacji xTS w trout 1.1. Nadal
korzystaj z poniższej dyskusji na temat obsługi CTS w trout 1.0.
W trout 1.0 nadal występuje kilka problemów z CTS. Wiadomo, że te moduły CTS zawierają
błędy testów:
| 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 |
Wiadomo, że te obszary CTS-V zawierają błędy testów:
| Test Car Launcher Test Bluetooth Low Energy (BLE) Advertiser Streaming Video Quality Verifier Test urządzenia Bluetooth HID Test mikrofonu HiFi Ultrasound Test głośnika HiFi Ultrasound |
Test Unlocked Device Required Test Dynamic Sensor Discovery Test Off Body Sensor Test Significant Motion Test powiadomienia o routingu wyjścia audio Test Network Request or Suggestion |
Informacje o wersji
trout 1.1 zawiera te znane problemy:
- Nie są dostępne kompilacje użytkownika
trout. System jest kompilowany jako-userdebug, co może mieć wpływ na niektóre testy CTS. - Nie jest obsługiwany Android Verified Boot (AVB).
- Niektóre podsystemy Androida mogą być niedostępne, w tym bezpieczny świat i NNHAL.
- Dostęp do sieci dla gości jest zwykle zapewniany za pomocą wirtualnego adaptera Wi-Fi i
a
virtio-nettunelu. Łączność po stronie hosta zależy od konkretnego wdrożenia hiperwizora. - Niektóre implementacje mogą oferować ograniczoną lub żadną obsługę Bluetooth.
- W przypadku niektórych czujników wstrzykiwanie zdarzeń VHAL może nie działać.
- Niektóre duże zbiory zadań mogą powodować problemy z odtwarzaniem dźwięku.
- W niektórych implementacjach ponowne uruchomienie gościa AAOS za pomocą adb może spowodować ponowne uruchomienie całego systemu.
- STS może powodować niestabilność systemu i wymagać ponownego uruchomienia.
Więcej informacji znajdziesz w informacjach o wersji dla partnerów dotyczących konkretnego wdrożenia trout.