Dzięki nowemu produktowi o nazwie trout
firma Android Automotive (AAOS) zapewnia teraz obsługę wdrażania jako gościnna maszyna wirtualna (VM) w środowiskach zgodnych ze standardem VirtIO . trout
oparty jest na wirtualnej platformie referencyjnej Cuttlefish i jest dostępny w konfiguracji urządzenia trout
. Kod źródłowy przestrzeni użytkownika można znaleźć na device/google/trout
. Poniższa tabela opisuje technologię zastosowaną do wirtualizacji każdego z podsystemów w trout
.
Funkcja | Technologia |
---|---|
Sterowanie dźwiękiem HAL | vsock/gRPC |
Dźwięk HAL | virtio-snd |
Bluetooth | virtio-console |
Stan wysypiska HAL | vsock/gRPC |
System rozszerzonego widoku (EVS) | virtio-video |
Tryb garażowy | vsock/gRPC |
Grafika | virtio-gpu |
Globalny system nawigacji satelitarnej (GNSS) | virtio-console |
Czujnik HAL 2.0 | virtio-scmi and IIO |
Wejście na ekranie dotykowym | virtio-input |
Pojazd HAL | vsock/gRPC |
Wydłuż pstrąga
trout
można wykorzystać jako punkt wyjścia do tworzenia nowych celów w zakresie pokładowego systemu informacyjno-rozrywkowego (IVI) dla systemu Android. Infrastruktura kompilacji została zaprojektowana z myślą o jej rozbudowie i dostosowaniu. Na 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 warstw HAL systemu Android można indywidualnie zastąpić implementacjami niestandardowymi lub zachować implementacje domyślne, ale pewne parametry konfiguracyjne dostosować w celu ustanowienia prawidłowej komunikacji między maszynami wirtualnymi w środowisku docelowym. Te warstwy HAL (w tym HAL pojazdu, HAL sterowania dźwiękiem i HAL Dumpstate) są implementowane za pomocą interfejsu gRPC wspieranego przez połączenie vsock
między gościem AAOS a systemem hosta zapewniającym implementację podstawowej funkcji. Należy je skonfigurować, podając odpowiednie parametry połączenia vsock
jako właściwości dostawcy. Kod źródłowy działa jako ostateczna podstawowa prawda, na podstawie której dostępne są właściwości do konfiguracji i ich semantyka.
Zbuduj pstrąga
Skompiluj przestrzeń użytkownika
Aby skompilować przestrzeń użytkownika:
- Pobierz drzewo źródeł Androida:
repo init -u https://android.googlesource.com/platform/manifest -b main repo sync -j8
- Zbuduj środowisko:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
Zbuduj jądro
W przypadku trout
1.1 baza kodu jądra jest dostarczana w AOSP. Jądro trout
składa się z tego samego kodu, co wcześniejsze ACK 5.10, z dodatkiem modułów specyficznych dla trout
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 zbudować jądro, uruchom:
BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
Twój dostawca hypervisora może wymagać innej konfiguracji jądra lub dodatkowych modułów, które należy skompilować. Pamiętaj, aby postępować zgodnie z tymi konkretnymi wskazówkami, jeśli je podano.
Zgodność
Gdy AAOS działa jako maszyna wirtualna gościa, naszym celem jest zapewnienie zgodnego wdrożenia systemu Android z perspektywy platformy. Kwestie po stronie hosta leżą w gestii każdej implementacji i wykraczają poza zakres trout
1.1.
Nie przeprowadziliśmy dodatkowej walidacji xTS na trout
1.1. Kontynuuj odwoływanie się do poniższej dyskusji na temat obsługi CTS w trout
1.0.
W trout
1.0 pozostaje kilka problemów związanych z CTS. Wiadomo, że następujące moduły CTS obejmują błędy testów:
CtsStagedInstallHostTestCases CtsRollbackManagerHostTestCases Przypadki testowe CtsVideo Testy CtsHostsideNetwork CtsActivityManagerBackgroundActivityTestCases Przypadki testowe CtsAdbHost Przypadki testowe CtsNativeHardware CtsContentTestPrzypadki Przypadki testowe CtsCarHost Przypadki testowe CtsOs Przypadki testowe CtsStatsdHost Przypadki testowe CtsVoiceInteraction Przypadki testowe CtsView Przypadki testowe CtsCamera CtsLocationGnssTestCases Przypadki testowe CtsGraphics Przypadki testowe CtsIncidentHost Przypadki testowe CtsInstallHost CtsNativeVerifiedBootTestCases CtsNetTestCases | CtsWindowManagerDeviceTestCases Przypadki testowe CtsMediaStress CtsAppTestCases Testy CtsUsb Przypadki testowe CtsAutoFillService Przypadki testowe CtsDisplay Przypadki testowe CtsMedia Przypadki testowe CtsDeqp CtsDumpsysHostTestCases CtsOpenGLTestCasesCtsLibcoreTestCases Przypadki testowe CtsSecurityHost Przypadki testowe CtsInputMethod CtsStatsdAtomHostPrzypadki testowe CtsPermission4TestCases CtsNNAPIBenchmarkTestCases CtsSimpleperfTestCases Przypadki testowe CtsAccessibility CtsAppSecurityHostTestCases Przypadki testowe CtsKeystore |
Wiadomo, że następujące obszary CTS-V obejmują niepowodzenia testów:
Test wyrzutni samochodów Test reklamodawcy Bluetooth Low Energy (BLE). Weryfikator jakości strumieniowego wideo Test urządzenia Bluetooth HID Test mikrofonu ultradźwiękowego HiFi Test głośników ultradźwiękowych HiFi | Odblokowane urządzenie Wymagany test Test dynamicznego wykrywania czujnika Wyłączony Test czujnika ciała Znaczący test ruchu Test powiadamiania o routingu wyjścia audio Test żądania sieciowego lub sugestii |
Informacje o wydaniu
trout
1.1 zawiera następujące znane problemy:
- Kompilacje
trout
wykonane przez użytkowników nie są dostępne. System jest zbudowany jako-userdebug
, co może mieć wpływ na niektóre testy CTS. - Rozruch zweryfikowany systemu Android (AVB) nie jest obsługiwany.
- Niektóre podsystemy Androida, w tym bezpieczny świat i NNHAL, mogą być niedostępne.
- Dostęp do sieci dla gości jest zwykle zapewniany za pomocą zwirtualizowanego adaptera Wi-Fi i tunelu
virtio-net
. Łączność po stronie hosta zależy od konkretnego wdrożenia hypervisora. - Niektóre implementacje mogą oferować ograniczoną funkcjonalność Bluetooth lub nie oferować jej wcale.
- Wstrzykiwanie zdarzeń VHAL może nie działać w przypadku niektórych czujników.
- Niektóre duże obciążenia mogą powodować zakłócenia w odtwarzaniu dźwięku.
- W niektórych implementacjach polecenie adb restart gościa AAOS może spowodować ponowne uruchomienie całego systemu.
- STS może powodować niestabilność systemu i wymagać ponownego uruchomienia.
Aby uzyskać dodatkowe szczegóły, zapoznaj się z informacjami o wersji partnera dotyczącymi konkretnego wdrożenia trout
.