trout नाम के नए प्रॉडक्ट की मदद से, Android Automotive (AAOS) अब VirtIO स्टैंडर्ड के साथ काम करने वाले एनवायरमेंट में, मेहमान वर्चुअल मशीन (VM) के तौर पर डिप्लॉय करने की सुविधा देता है. trout, Cuttlefish वर्चुअल रेफ़रंस प्लैटफ़ॉर्म पर आधारित है. यह trout डिवाइस कॉन्फ़िगरेशन के तौर पर उपलब्ध है. यूज़रस्पेस का सोर्स कोड device/google/trout पर देखा जा सकता है. नीचे दी गई टेबल में, trout के हर सबसिस्टम को वर्चुअलाइज़ करने के लिए इस्तेमाल की गई टेक्नोलॉजी के बारे में बताया गया है.
| सुविधा | टेक्नोलॉजी |
|---|---|
| ऑडियो कंट्रोल एचएएल | vsock/gRPC |
| Audio HAL | virtio-snd |
| ब्लूटूथ | virtio-console |
| Dumpstate HAL | vsock/gRPC |
| एक्सटेंडेड व्यू सिस्टम (ईवीएस) | virtio-video |
| गराज मोड | vsock/gRPC |
| ग्राफ़िक | virtio-gpu |
| ग्लोबल नेविगेशन सैटलाइट सिस्टम (GNSS) | virtio-console |
| Sensor HAL 2.0 | virtio-scmi and IIO |
| टचस्क्रीन इनपुट | virtio-input |
| वाहन एचएएल | vsock/gRPC |
Extend trout
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 को कस्टम तरीके से लागू करने के लिए, अलग-अलग बदला जा सकता है. इसके अलावा, डिफ़ॉल्ट तरीके से लागू करने की सुविधा को बनाए रखा जा सकता है. हालांकि, टारगेट किए गए एनवायरमेंट में, एक वीएम से दूसरे वीएम के बीच सही तरीके से कम्यूनिकेशन करने के लिए, कुछ कॉन्फ़िगरेशन पैरामीटर में बदलाव किया जा सकता है. इन एचएएल (इनमें वाहन एचएएल, ऑडियो कंट्रोल एचएएल, और डंपस्टेट एचएएल शामिल हैं) को gRPC इंटरफ़ेस की मदद से लागू किया जाता है. यह इंटरफ़ेस, AAOS मेहमान और होस्ट सिस्टम के बीच vsock कनेक्शन पर काम करता है. होस्ट सिस्टम, सुविधा को लागू करने में मदद करता है. इन्हें वेंडर प्रॉपर्टी के तौर पर सही vsock कनेक्शन पैरामीटर उपलब्ध कराकर कॉन्फ़िगर किया जाना चाहिए. सोर्स कोड, कॉन्फ़िगरेशन और उनके सेमेंटेक्स के लिए उपलब्ध प्रॉपर्टी के बारे में पूरी जानकारी देता है.
ट्राउट बनाना
यूज़रस्पेस को कंपाइल करना
यूज़रस्पेस को कंपाइल करने के लिए:
- 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 के हिसाब से बनाए गए मॉड्यूल भी जोड़े गए हैं.
- कर्नेल को क्लोन करने के लिए, यह कमांड चलाएं:
repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
- कर्नेल रन बनाने के लिए:
BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
हो सकता है कि आपके हाइपरवाइजर सप्लायर के पास, अलग तरह का कर्नेल कॉन्फ़िगरेशन हो या ऐसे अतिरिक्त मॉड्यूल हों जिन्हें कंपाइल करना ज़रूरी हो. अगर आपको कोई खास निर्देश दिया गया है, तो उसका पालन ज़रूर करें.
अनुपालन
जब AAOS, मेहमान VM के तौर पर चलता है, तो हमारा मकसद फ़्रेमवर्क के हिसाब से, 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 के इन इलाकों में जांच पूरी नहीं हो सकी:
| कार लॉन्चर की जांच ब्लूटूथ स्मार्टवॉच (बीएलई) विज्ञापन देने वाले की जांच स्ट्रीमिंग वीडियो की क्वालिटी की पुष्टि करने वाला टूल ब्लूटूथ एचआईडी डिवाइस की जांच हाईफ़ाई अल्ट्रासोनिक माइक्रोफ़ोन की जांच हाईफ़ाई अल्ट्रासोनिक स्पीकर की जांच |
अनलॉक किए गए डिवाइस के लिए ज़रूरी टेस्ट डाइनैमिक सेंसर डिस्कवरी टेस्ट ऑफ़ बॉडी सेंसर टेस्ट काफ़ी गति का टेस्ट ऑडियो आउटपुट रूटिंग सूचना टेस्ट नेटवर्क अनुरोध या सुझाव टेस्ट |
रिलीज़ नोट
trout 1.1 में ये समस्याएं पहले से मौजूद हैं:
troutके उपयोगकर्ता के लिए बने वर्शन उपलब्ध नहीं हैं. सिस्टम को-userdebugके तौर पर बनाया गया है. इससे कुछ सीटीएस टेस्ट पर असर पड़ सकता है.- Android वेरिफ़ाइड बूट (एवीबी) की सुविधा काम नहीं करती.
- ऐसा हो सकता है कि कुछ Android सबसिस्टम उपलब्ध न हों. इनमें, सुरक्षित वर्ल्ड और NNHAL शामिल हैं.
- मेहमान नेटवर्क का ऐक्सेस, आम तौर पर वर्चुअलाइज़ किए गए वाई-फ़ाई अडैप्टर और
virtio-netटनल की मदद से दिया जाता है. होस्ट-साइड कनेक्टिविटी, आपके हाइपरवाइजर के डिप्लॉयमेंट पर निर्भर करती है. - कुछ तरीकों से, ब्लूटूथ की सुविधा सीमित तौर पर या बिलकुल भी काम नहीं करती.
- ऐसा हो सकता है कि कुछ सेंसर के लिए, VHAL इवेंट इंजेक्शन काम न करे.
- ज़्यादा वर्कलोड होने पर, ऑडियो चलाने में समस्याएं आ सकती हैं.
- कुछ मामलों में, AAOS मेहमान के adb रीबूट से पूरा सिस्टम रीबूट हो सकता है.
- एसटीएस की वजह से, सिस्टम में खराबी आ सकती है और उसे रीबूट करना पड़ सकता है.
ज़्यादा जानकारी के लिए, trout के अपने खास डिप्लॉयमेंट के लिए, पार्टनर रिलीज़ नोट देखें.