रेफ़रंस प्लैटफ़ॉर्म

trout नाम के नए प्रॉडक्ट की मदद से, Android Automotive (AAOS) अब VirtIO स्टैंडर्ड के साथ काम करने वाले एनवायरमेंट में, गेस्ट वर्चुअल मशीन (वीएम) के तौर पर डिप्लॉय करने की सुविधा देता है. trout, Cuttlefish वर्चुअल रेफ़रंस प्लैटफ़ॉर्म पर आधारित है. यह trout डिवाइस कॉन्फ़िगरेशन के तौर पर उपलब्ध है. उपयोगकर्ता स्पेस का सोर्स कोड, device/google/trout पर देखा जा सकता है. यहां दी गई टेबल में, trout के हर सबसिस्टम को वर्चुअलाइज़ करने के लिए इस्तेमाल की गई टेक्नोलॉजी के बारे में बताया गया है.

सुविधा टेक्नोलॉजी
ऑडियो कंट्रोल एचएएल vsock/gRPC
ऑडियो HAL virtio-snd
ब्लूटूथ virtio-console
Dumpstate HAL vsock/gRPC
एक्सटेंडेड व्यू सिस्टम (ईवीएस) virtio-video
गैराज मोड vsock/gRPC
ग्राफ़िक virtio-gpu
ग्लोबल नेविगेशन सैटलाइट सिस्टम (जीएनएसएस) virtio-console
सेंसर एचएएल 2.0 virtio-scmi and IIO
टचस्क्रीन इनपुट virtio-input
वाहन एचएएल vsock/gRPC

ट्रॉउट को बड़ा करें

trout का इस्तेमाल, वाहन में सूचना और मनोरंजन (आईवीआई) देने वाले नए 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 को कस्टम तरीके से लागू किए गए HAL से अलग-अलग बदला जा सकता है. इसके अलावा, डिफ़ॉल्ट तौर पर लागू किए गए HAL को बनाए रखा जा सकता है. हालांकि, टारगेट एनवायरमेंट में वीएम के बीच सही तरीके से कम्यूनिकेशन करने के लिए, कुछ कॉन्फ़िगरेशन पैरामीटर में बदलाव किया जा सकता है. इन एचएएल (इनमें व्हीकल एचएएल, ऑडियो कंट्रोल एचएएल, और डंपस्टेट एचएएल शामिल हैं) को gRPC इंटरफ़ेस के ज़रिए लागू किया जाता है. यह इंटरफ़ेस, AAOS गेस्ट और उस होस्ट सिस्टम के बीच vsock कनेक्शन पर काम करता है जो बुनियादी सुविधा लागू करता है. इन्हें वेंडर प्रॉपर्टी के तौर पर सही vsock कनेक्शन पैरामीटर देकर कॉन्फ़िगर किया जाना चाहिए. सोर्स कोड, सबसे भरोसेमंद जानकारी के तौर पर काम करता है. इससे यह पता चलता है कि कौनसी प्रॉपर्टी कॉन्फ़िगर की जा सकती हैं और उनके सिमैंटिक क्या हैं.

ट्राउट मछली बनाना

उपयोगकर्ता स्पेस को कंपाइल करना

उपयोगकर्ता स्पेस को कंपाइल करने के लिए:

  1. Android का सोर्स ट्री डाउनलोड करें:
    repo init -u https://android.googlesource.com/platform/manifest -b main
    repo sync -j8
    
  2. एनवायरमेंट बनाएं:
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

कर्नेल बनाना

trout 1.1 के लिए, कर्नेल कोडबेस AOSP में उपलब्ध कराया गया है. trout कर्नेल में वही कोड शामिल है जो अपस्ट्रीम ACK 5.10 में है. हालांकि, इसमें VirtIO सबसिस्टम के लिए trout-विशिष्ट मॉड्यूल जोड़े गए हैं.

  1. कर्नेल को क्लोन करने के लिए, यह कमांड चलाएं:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. कर्नेल रन बनाने के लिए:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

ऐसा हो सकता है कि हाइपरवाइज़र सप्लायर के पास, कर्नल कॉन्फ़िगरेशन से जुड़ी कोई दूसरी ज़रूरी जानकारी हो या ऐसे अतिरिक्त मॉड्यूल हों जिन्हें कंपाइल करने की ज़रूरत हो. अगर कोई खास निर्देश दिया गया है, तो उसका पालन ज़रूर करें.

अनुपालन

जब AAOS, गेस्ट वीएम के तौर पर काम करता है, तो हमारा लक्ष्य फ़्रेमवर्क के हिसाब से Android के साथ काम करने वाला डिप्लॉयमेंट होना चाहिए. होस्ट साइड की समस्याएं, हर लागू करने की प्रोसेस के दायरे में आती हैं. साथ ही, ये trout 1.1 के दायरे से बाहर होती हैं.

हमने trout 1.1 पर xTS की अतिरिक्त पुष्टि नहीं की है. trout 1.0 में सीटीएस के साथ काम करने की सुविधा के बारे में यहां दी गई जानकारी पढ़ें.

trout 1.0 में, अब भी सीटीएस से जुड़ी कई समस्याएं हैं. इन सीटीएस मॉड्यूल में टेस्ट फ़ेल होने की समस्या देखी गई है:

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

CTS-V के इन क्षेत्रों में, टेस्ट फ़ेल होने की समस्या देखी गई है:

कार लॉन्चर की जांच
ब्लूटूथ लो एनर्जी (BLE) एडवर्टाइज़र की जांच
स्ट्रीम किए जा रहे वीडियो की क्वालिटी की पुष्टि करने वाला टूल
ब्लूटूथ एचआईडी डिवाइस की जांच
हाई-फ़्रीक्वेंसी अल्ट्रासाउंड माइक्रोफ़ोन की जांच
हाई-फ़्रीक्वेंसी अल्ट्रासाउंड स्पीकर की जांच
डिवाइस अनलॉक होने पर किए जाने वाले टेस्ट
डाइनैमिक सेंसर डिस्कवरी टेस्ट
डिवाइस के शरीर से दूर होने पर किए जाने वाले सेंसर टेस्ट
तेज़ी से हिलने पर किए जाने वाले टेस्ट
ऑडियो आउटपुट राउटिंग की सूचना से जुड़ा टेस्ट
नेटवर्क अनुरोध या सुझाव से जुड़ा टेस्ट

प्रॉडक्ट की जानकारी

trout 1.1 में ये समस्याएं पहले से मालूम हैं:

  • trout के उपयोगकर्ता बिल्ड उपलब्ध नहीं हैं. इस सिस्टम को -userdebug के तौर पर बनाया गया है. इससे कुछ सीटीएस टेस्ट पर असर पड़ सकता है.
  • Android Verified Boot (AVB) की सुविधा काम नहीं करती.
  • ऐसा हो सकता है कि कुछ Android सबसिस्टम उपलब्ध न हों. जैसे, सुरक्षित दुनिया और NNHAL.
  • मेहमान उपयोगकर्ता के लिए नेटवर्क का ऐक्सेस आम तौर पर, वर्चुअलाइज़ किए गए वाई-फ़ाई अडैप्टर और virtio-net टनल के ज़रिए दिया जाता है. होस्ट-साइड कनेक्टिविटी, आपके हाइपरवाइज़र डिप्लॉयमेंट पर निर्भर करती है.
  • ऐसा हो सकता है कि कुछ डिवाइसों में ब्लूटूथ की सुविधा सीमित तौर पर उपलब्ध हो या उपलब्ध ही न हो.
  • ऐसा हो सकता है कि कुछ सेंसर के लिए, वीएचएएल इवेंट इंजेक्शन काम न करे.
  • ज़्यादा डेटा प्रोसेस करने वाले कुछ टास्क की वजह से, ऑडियो चलाने में गड़बड़ियां हो सकती हैं.
  • कुछ मामलों में, AAOS गेस्ट को adb reboot करने से पूरा सिस्टम रीबूट हो सकता है.
  • एसटीएस की वजह से, सिस्टम में खराबी आ सकती है और इसे रीबूट करने की ज़रूरत पड़ सकती है.

ज़्यादा जानकारी के लिए, trout के खास डिप्लॉयमेंट के लिए, पार्टनर के रिलीज़ नोट देखें.