Nền tảng tham chiếu

Thông qua một sản phẩm mới có tên là trout, Android Automotive (AAOS) hiện hỗ trợ triển khai dưới dạng máy ảo khách (VM) trong các môi trường tương thích với tiêu chuẩn VirtIO. trout dựa trên nền tảng tham chiếu ảo Cuttlefish và có sẵn dưới dạng cấu hình thiết bị trout. Bạn có thể tìm thấy mã nguồn không gian người dùng tại device/google/trout. Bảng dưới đây mô tả công nghệ dùng để ảo hoá từng hệ thống con trong trout.

Tính năng Công nghệ
Audio Control HAL vsock/gRPC
Audio HAL virtio-snd
Bluetooth virtio-console
Dumpstate HAL vsock/gRPC
Hệ thống chế độ xem mở rộng (EVS) virtio-video
Chế độ gara vsock/gRPC
Đồ hoạ virtio-gpu
Hệ thống vệ tinh điều hướng toàn cầu (GNSS) virtio-console
Sensor HAL 2.0 virtio-scmi and IIO
Nhập bằng màn hình cảm ứng virtio-input
HAL của xe vsock/gRPC

Mở rộng trout

Bạn có thể sử dụng trout làm điểm xuất phát để tạo các mục tiêu Android mới cho Thông tin giải trí trên ô tô (IVI). Cơ sở hạ tầng bản dựng được thiết kế để mở rộng và tuỳ chỉnh. Ví dụ:

# 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 ...]

Bạn có thể thay thế từng HAL Android bằng cách triển khai tuỳ chỉnh hoặc duy trì cách triển khai mặc định nhưng điều chỉnh một số tham số cấu hình để thiết lập giao tiếp giữa các máy ảo phù hợp trong môi trường mục tiêu. Các HAL này (bao gồm cả HAL xe, HAL điều khiển âm thanh và HAL Dumpstate) được triển khai thông qua giao diện gRPC được hỗ trợ bởi kết nối vsock giữa máy khách AAOS và hệ thống lưu trữ cung cấp việc triển khai tính năng cơ bản. Bạn phải định cấu hình các thuộc tính này bằng cách cung cấp các thông số kết nối vsock thích hợp dưới dạng thuộc tính nhà cung cấp. Mã nguồn đóng vai trò là nguồn thông tin đáng tin cậy nhất về những thuộc tính có sẵn để định cấu hình và ngữ nghĩa của các thuộc tính đó.

Xây dựng trout

Biên dịch không gian người dùng

Cách biên dịch không gian người dùng:

  1. Tải cây nguồn Android xuống:
    repo init -u https://android.googlesource.com/platform/manifest -b main
    repo sync -j8
    
  2. Tạo môi trường:
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

Tạo nhân

Đối với trout 1.1, cơ sở mã nhân hệ điều hành được cung cấp trong AOSP. Hạt nhân trout được tạo thành từ cùng một mã với ACK 5.10 ở thượng nguồn, với việc bổ sung các mô-đun dành riêng cho trout cho các hệ thống con VirtIO.

  1. Để nhân bản hạt nhân, hãy chạy:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. Cách tạo bản dựng kernel chạy:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

Nhà cung cấp trình điều khiển ảo hoá của bạn có thể yêu cầu cấu hình hạt nhân khác hoặc cần biên dịch các mô-đun bổ sung. Hãy nhớ làm theo hướng dẫn cụ thể này (nếu có).

Tuân thủ

Khi AAOS chạy dưới dạng máy ảo khách, mục tiêu của chúng tôi là triển khai Android tương thích từ góc độ khung. Các vấn đề phía máy chủ thuộc phạm vi của từng phương thức triển khai và nằm ngoài phạm vi của trout 1.1.

Chúng tôi chưa thực hiện quy trình xác thực xTS bổ sung trên trout 1.1. Tiếp tục tham khảo phần thảo luận bên dưới về tính năng hỗ trợ CTS trong trout 1.0.

Trong trout 1.0, vẫn còn một số vấn đề về CTS. Các mô-đun CTS sau đây được biết là có lỗi kiểm thử:

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

Các khu vực CTS-V sau đây được biết là có lỗi kiểm thử:

Kiểm thử Trình chạy ô tô
Kiểm thử nhà quảng cáo Bluetooth năng lượng thấp (BLE)
Trình xác minh chất lượng video trực tuyến
Kiểm thử thiết bị HID Bluetooth
Kiểm thử micrô siêu âm Hifi
Kiểm thử loa siêu âm Hifi
Kiểm thử Yêu cầu thiết bị đã mở khoá
Kiểm thử Phát hiện cảm biến động
Kiểm thử Cảm biến ngoài cơ thể
Kiểm thử Chuyển hướng đầu ra âm thanh
Kiểm thử Đề xuất hoặc yêu cầu về mạng

Ghi chú phát hành

trout 1.1 có các vấn đề đã biết sau:

  • Không có bản dựng người dùng của trout. Hệ thống được tạo dưới dạng -userdebug, điều này có thể ảnh hưởng đến một số kiểm thử CTS.
  • Không hỗ trợ tính năng Khởi động được xác minh của Android (AVB).
  • Một số hệ thống con Android có thể không hoạt động, bao gồm cả thế giới bảo mật và NNHAL.
  • Quyền truy cập vào mạng khách thường được cung cấp thông qua bộ chuyển đổi Wi-Fi ảo hoá và một đường hầm virtio-net. Khả năng kết nối phía máy chủ phụ thuộc vào cách triển khai trình điều khiển ảo hoá cụ thể của bạn.
  • Một số cách triển khai có thể cung cấp chức năng Bluetooth bị hạn chế hoặc không có.
  • Tính năng chèn sự kiện VHAL có thể không hoạt động đối với một số cảm biến.
  • Một số khối lượng công việc nặng có thể gây ra sự cố phát âm thanh.
  • Trong một số trường hợp triển khai, việc khởi động lại adb của hệ điều hành khách AAOS có thể khởi động lại toàn bộ hệ thống.
  • STS có thể khiến hệ thống không ổn định và cần khởi động lại.

Để biết thêm thông tin, hãy tham khảo ghi chú phát hành của đối tác về cách triển khai cụ thể của bạn đối với trout.