trout라는 새로운 제품을 통해 이제 Android Automotive(AAOS)가 VirtIO 표준과 호환되는 환경에서 게스트 가상 머신(VM)으로 배포를 지원합니다. trout는 Cuttlefish 가상 참조 플랫폼을 기반으로 하며 trout 기기 설정으로 사용할 수 있습니다. 사용자 공간 소스 코드는 device/google/trout에서 확인할 수 있습니다. 아래 표는 trout의 각 하위 시스템을 가상화하는 데 사용되는 기술을 설명합니다.
trout는 새로운 차량용 인포테인먼트(IVI) Android 타겟을 생성하기 위한 시작점으로 사용할 수 있습니다. 빌드 인프라는 확장 및 맞춤설정하도록 설계되었습니다.
예:
# 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을 맞춤 구현으로 개별적으로 대체하거나, 기본 구현을 유지하지만 특정 구성 매개변수를 조정하여 대상 환경에서 적절한 VM 간 통신을 설정할 수 있습니다. 이러한 HAL(차량 HAL, Audio Control HAL 및 Dumpstate HAL 포함)은 AAOS 게스트와 기본 기능 구현을 제공하는 호스트 시스템 간의 vsock 연결로 지원되는 gRPC 인터페이스를 통해 구현됩니다. 이는 공급업체 속성으로 적절한 vsock 연결 매개변수를 제공함으로써 구성해야 합니다. 소스 코드는 속성이 구성 및 시맨틱에 사용할 수 있는 최종 정답 역할을 합니다.
trout 빌드
사용자 공간 컴파일
사용자 공간을 컴파일하려면 다음을 실행합니다.
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과 동일한 코드로 구성되며, VirtIO 하위 시스템을 위한 trout 전용 모듈이 추가되어 있습니다.
자동차 런처 테스트
저전력 블루투스(BLE) 광고주 테스트
스트리밍 동영상 품질 인증기
블루투스 HID 기기 테스트
HiFi 초음파 마이크 테스트
HiFi 초음파 스피커 테스트
잠금 해제 기기 필수 테스트 동적 센서 검색 테스트 생체 미접착 신호 센서 중요 모션 테스트 오디오 출력 라우팅 알림 테스트 네트워크 요청 또는 추천 테스트
출시 노트
trout 1.1에는 다음과 같은 알려진 문제가 있습니다.
trout의 사용자 빌드를 사용할 수 없습니다. 시스템은 -userdebug로 빌드되므로 이는 일부 CTS 테스트에 영향을 줄 수 있습니다.
Android 자체 검사 부팅 (AVB)은 지원되지 않습니다.
보안 환경 및 NNHAL을 포함하여 일부 Android 하위 시스템은 사용하지 못할 수 있습니다.
게스트 네트워크 액세스는 일반적으로 가상화된 Wi-Fi 어댑터와 virtio-net 터널을 통해 제공됩니다. 호스트 측 연결은 특정 하이퍼바이저 배포에 따라 다릅니다.
일부 구현에서는 블루투스 기능이 제한되거나 제공되지 않을 수 있습니다.
일부 센서에는 VHAL 이벤트 삽입이 작동하지 않을 수 있습니다.
워크로드가 많으면 오디오 재생에 문제가 발생할 수 있습니다.
일부 구현에서는 AAOS 게스트의 adb 재부팅이 시스템 전체를 재부팅할 수 있습니다.
STS로 인해 시스템 안정성이 저하되어 재부팅이 필요할 수 있습니다.
자세한 내용은 trout의 특정 배포에 관한 파트너 출시 노트를 참고하세요.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Reference platform\n\nThrough a new product named `trout`, Android Automotive (AAOS) now provides support\nfor deployment as a guest virtual machine (VM) in environments compatible with the\n[VirtIO](https://github.com/oasis-tcs/virtio-spec)\nstandard. `trout` is based on the\n[Cuttlefish](/docs/devices/cuttlefish)\nvirtual reference platform and is available as the `trout` device configuration. The\nuserspace source code can be found at `device/google/trout`. The table\nbelow describes the technology used to virtualize each of the subsystems in `trout`.\n| The current release of `trout` is version 1.1 and is based on Android 13 QPR1.\n\n| Feature | Technology |\n|------------------------------------------------------------------------------------------------|-----------------------|\n| [Audio Control HAL](/docs/automotive/virtualization/architecture#audio) | `vsock/gRPC` |\n| [Audio HAL](/docs/automotive/virtualization/architecture#audio) | `virtio-snd` |\n| [Bluetooth](/docs/automotive/virtualization/architecture#bt) | `virtio-console` |\n| [Dumpstate HAL](/docs/automotive/virtualization/architecture#dumpstate) | `vsock/gRPC` |\n| [Extended View System (EVS)](/docs/automotive/virtualization/architecture#evs) | `virtio-video` |\n| [Garage mode](/docs/automotive/virtualization/architecture#garage) | `vsock/gRPC` |\n| [Graphics](/docs/automotive/virtualization/architecture#graphics) | `virtio-gpu` |\n| [Global navigation satellite system (GNSS)](/docs/automotive/virtualization/architecture#gnss) | `virtio-console` |\n| [Sensor HAL 2.0](/docs/automotive/virtualization/architecture#sensor-hal) | `virtio-scmi and IIO` |\n| [Touchscreen input](/docs/automotive/virtualization/architecture#other) | `virtio-input` |\n| [Vehicle HAL](/docs/automotive/virtualization/architecture#vehicle-hal) | `vsock/gRPC` |\n\nExtend trout\n------------\n\n`trout` can be used as a starting point to create new In-Vehicle Infotainment (IVI)\nAndroid targets. The build infrastructure is designed to be extended and customized.\nFor example: \n\n```\n# Inherit trout-arm64 default values and settings\n$(call inherit-product, device/google/trout/aosp_trout_arm64.mk)\n\n# Customize HALs as needed\nLOCAL_VHAL_PRODUCT_PACKAGE := vendor.oem.vhal@2.0-service\nLOCAL_AUDIO_PRODUCT_PACKAGE := vendor.oem.audio@6.0-impl\n\n# Configure SELinux policy\nBOARD_SEPOLICY_DIRS += device/oem/car/sepolicy/vendor/oem\n\n# Configure properties\nLOCAL_DUMPSTATE_PROPERTIES := \\\n ro.vendor.dumpstate.server.cid=22 \\\n ro.vendor.dumpstate.server.port=406 \\\n ro.vendor.helpersystem.log_loc=/data/dumpstate\n\n[... and more as needed ...]\n```\n\nSeveral Android HALs can be individually replaced with custom implementations, or the\ndefault implementations maintained but certain configuration parameters adjusted to establish\nproper inter-VM communication in the target environment. These HALs (including Vehicle HAL,\nAudio Control HAL, and Dumpstate HAL) are implemented by means of a gRPC interface backed by a\n`vsock` connection between the AAOS guest and a host system providing the\nunderlying feature implementation. These must be configured by means of supplying the proper\n`vsock` connection parameters as vendor properties. The source code acts as the ultimate\nground truth on which properties are available for configuration and their semantics.\n\nBuild trout\n-----------\n\n### Compile the userspace\n\nTo compile the userspace:\n\n1. Download the Android source tree: \n\n ```\n repo init -u https://android.googlesource.com/platform/manifest -b main\n repo sync -j8\n ```\n2. Build the environment: \n\n ```\n source build/envsetup.sh\n lunch aosp_trout_arm64-userdebug\n make -j24\n ```\n\nBuild the kernel\n----------------\n\nFor `trout` 1.1, the kernel codebase is provided in AOSP. The `trout`\nkernel is composed of the same code as the upstream ACK 5.10, with the addition of\n`trout`-specific modules for VirtIO subsystems.\n\n1. To clone the kernel, run: \n\n ```\n repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync\n ```\n2. To build the kernel run: \n\n ```\n BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh\n ```\n\nYour hypervisor supplier might have a different kernel configuration required or additional\nmodules that need to be compiled. Be sure to follow this specific guidance, if provided.\n\nCompliance\n----------\n\nWhen AAOS runs as a guest VM, our goal is to be a compatible Android deployment from the\nframework perspective. Host side issues are the purview of each implementation and outside the\nscope of `trout` 1.1.\n\nWe haven't performed additional xTS validation on `trout` 1.1. Continue\nto refer to the below discussion of CTS support in `trout` 1.0.\n\nIn `trout` 1.0, several CTS issues remain. The following CTS modules are known to\ninclude test failures:\n\n|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| 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 |\n\nThe following CTS-V areas are known to include test failures:\n\n|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Car Launcher test Bluetooth Low Energy (BLE) Advertiser test Streaming Video Quality Verifier Bluetooth HID Device test Hifi Ultrasound Microphone test Hifi Ultrasound Speaker test | Unlocked Device Required test Dynamic Sensor Discovery test Off Body Sensor test Significant Motion test Audio Output Routing Notification test Network Request or Suggestion test |\n\nRelease notes\n-------------\n\n`trout` 1.1 contains the following known issues:\n\n- User builds of `trout` aren't available. The system is built as `-userdebug`, which can affect some CTS tests.\n- Android Verified Boot (AVB) isn't supported.\n- Some Android subsystems might be unavailable, including secure world and NNHAL.\n- Guest network access is generally provided by means of a virtualized Wi-Fi adapter and a `virtio-net` tunnel. Host-side connectivity depends on your specific hypervisor deployment.\n- Some implementations might offer limited or no Bluetooth capability.\n- A VHAL event injection might not work for some sensors.\n- Some heavy workloads can cause audio playback glitches.\n- In some implementations, adb reboot of the AAOS guest might reboot the entire system.\n- STS can cause system instability and require a reboot.\n\nFor additional details, refer to the partner release notes for your specific deployment of\n`trout`."]]