Platforma referencyjna

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:

  1. Pobierz drzewo źródłowe Androida:
    repo init -u https://android.googlesource.com/platform/manifest -b main
    repo sync -j8
    
  2. 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.

  1. Aby sklonować jądro, uruchom:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. 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-net tunelu. Łą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.