Referans platform

Android Automotive (AAOS), trout adlı yeni bir ürünle artık VirtIO standardıyla uyumlu ortamlarda konuk sanal makine (VM) olarak dağıtımı destekliyor. trout, Cuttlefish sanal referans platformunu temel alır ve trout cihaz yapılandırması olarak kullanılabilir. Kullanıcı alanı kaynak kodunu device/google/trout adresinde bulabilirsiniz. Aşağıdaki tabloda, trout içindeki her bir alt sistemi sanallaştırmak için kullanılan teknoloji açıklanmaktadır.

Özellik Teknoloji
Audio Control HAL vsock/gRPC
Ses HAL'si virtio-snd
Bluetooth virtio-console
Dumpstate HAL vsock/gRPC
Genişletilmiş Görüntüleme Sistemi (EVS) virtio-video
Garaj modu vsock/gRPC
Grafik virtio-gpu
Küresel navigasyon uydu sistemi (GNSS) virtio-console
Sensor HAL 2.0 virtio-scmi and IIO
Dokunmatik ekran girişi virtio-input
Araç HAL'si vsock/gRPC

Alabalık uzatma

trout, yeni araç içi bilgi-eğlence (IVI) Android hedefleri oluşturmak için başlangıç noktası olarak kullanılabilir. Derleme altyapısı, genişletilecek ve özelleştirilecek şekilde tasarlanmıştır. Örneğin:

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

Çeşitli Android HAL'leri özel uygulamalarla ayrı ayrı değiştirilebilir veya varsayılan uygulamalar korunabilir ancak hedef ortamda uygun VM'ler arası iletişim kurmak için belirli yapılandırma parametreleri ayarlanabilir. Bu HAL'ler (Araç HAL'si, Ses Kontrolü HAL'si ve Dumpstate HAL'si dahil) AAOS konuğu ile temel özellik uygulamasını sağlayan bir ana sistem arasında vsock bağlantısı ile desteklenen bir gRPC arayüzü aracılığıyla uygulanır. Bunlar, satıcı özellikleri olarak uygun vsock bağlantı parametreleri sağlanarak yapılandırılmalıdır. Kaynak kodu, hangi özelliklerin yapılandırılabileceği ve bunların anlamsal yapısı konusunda nihai gerçek doğru olarak kabul edilir.

Alabalık inşa etme

Kullanıcı alanını derleme

Kullanıcı alanını derlemek için:

  1. Android kaynak ağacını indirin:
    repo init -u https://android.googlesource.com/platform/manifest -b main
    repo sync -j8
    
  2. Ortamı oluşturun:
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

Çekirdeği oluşturma

trout 1.1 için çekirdek kod tabanı AOSP'de sağlanır. trout çekirdeği, yukarı akış ACK 5.10 ile aynı koddan oluşur ve VirtIO alt sistemleri için trout'a özel modüller eklenmiştir.

  1. Çekirdeği klonlamak için şunu çalıştırın:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. Çekirdeği oluşturmak için şunu çalıştırın:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

Hipervizör tedarikçiniz, farklı bir çekirdek yapılandırması gerektirebilir veya derlenmesi gereken ek modüller olabilir. Verildiyse bu özel talimatlara uymayı unutmayın.

Uygunluk

AAOS, konuk sanal makine olarak çalışırken hedefimiz, çerçeve açısından uyumlu bir Android dağıtımı olmaktır. Ana makine tarafındaki sorunlar her uygulamanın kapsamındadır ve trout 1.1'in kapsamı dışındadır.

trout 1.1 üzerinde ek xTS doğrulaması yapmadık. trout 1.0'da CTS desteğiyle ilgili aşağıdaki tartışmaya göz atmaya devam edin.

trout 1.0'da çeşitli CTS sorunları devam ediyor. Aşağıdaki CTS modüllerinin test hataları içerdiği bilinmektedir:

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

Aşağıdaki CTS-V alanlarının test hataları içerdiği bilinmektedir:

Araba Başlatıcı testi
Bluetooth Düşük Enerji (BLE) Reklamveren testi
Akış Video Kalitesi Doğrulayıcı
Bluetooth HID Cihazı testi
Hifi Ultrason Mikrofon testi
Hifi Ultrason Hoparlör testi
Kilidi Açılmış Cihaz Gerekli testi
Dinamik Sensör Keşfi testi
Vücut Dışı Sensör testi
Önemli Hareket testi
Ses Çıkışı Yönlendirme Bildirimi testi
Ağ İsteği veya Öneri testi

Sürüm notları

trout 1.1 sürümünde aşağıdaki bilinen sorunlar bulunmaktadır:

  • trout'nın kullanıcı derlemeleri kullanılamaz. Sistem, -userdebug olarak oluşturulmuştur. Bu durum, bazı CTS testlerini etkileyebilir.
  • Android Doğrulanmış Başlatma (AVB) desteklenmez.
  • Güvenli dünya ve NNHAL dahil olmak üzere bazı Android alt sistemleri kullanılamayabilir.
  • Misafir ağı erişimi genellikle sanallaştırılmış bir kablosuz ağ adaptörü ve virtio-net tüneli aracılığıyla sağlanır. Ana makine tarafındaki bağlantı, hiper yönetici dağıtımınıza bağlıdır.
  • Bazı uygulamalarda Bluetooth özelliği sınırlı olabilir veya hiç olmayabilir.
  • VHAL etkinliği yerleştirme işlemi bazı sensörlerde çalışmayabilir.
  • Ağır iş yükleri, ses oynatma sorunlarına neden olabilir.
  • Bazı uygulamalarda, AAOS konuğunun adb reboot komutu tüm sistemi yeniden başlatabilir.
  • STS, sistemin kararsız olmasına neden olabilir ve yeniden başlatma gerektirebilir.

Daha fazla bilgi için trout'nın belirli dağıtımıyla ilgili iş ortağı sürüm notlarına bakın.