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:
- Android kaynak ağacını indirin:
repo init -u https://android.googlesource.com/platform/manifest -b main repo sync -j8
- 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.
- Ç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
- Ç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,-userdebugolarak 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-nettü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.