संदर्भ मंच

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

विशेषता तकनीकी
ऑडियो नियंत्रण एचएएल vsock/gRPC
ऑडियो एचएएल virtio-snd
ब्लूटूथ virtio-console
डंपस्टेट एचएएल vsock/gRPC
विस्तारित दृश्य प्रणाली (ईवीएस) virtio-video
गैराज मोड vsock/gRPC
GRAPHICS virtio-gpu
वैश्विक नेविगेशन उपग्रह प्रणाली (जीएनएसएस) virtio-console
सेंसर एचएएल 2.0 virtio-scmi and IIO
टचस्क्रीन इनपुट virtio-input
वाहन एचएएल vsock/gRPC

ट्राउट बढ़ाएँ

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

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

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

ट्राउट बनाएँ

उपयोक्तास्थान संकलित करें

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

  1. एंड्रॉइड सोर्स ट्री डाउनलोड करें:
    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
    

आपके हाइपरवाइज़र आपूर्तिकर्ता के पास आवश्यक भिन्न कर्नेल कॉन्फ़िगरेशन या अतिरिक्त मॉड्यूल हो सकते हैं जिन्हें संकलित करने की आवश्यकता है। यदि प्रदान किया गया है तो इस विशिष्ट मार्गदर्शन का पालन करना सुनिश्चित करें।

अनुपालन

जब एएओएस एक अतिथि वीएम के रूप में चलता है, तो हमारा लक्ष्य फ्रेमवर्क परिप्रेक्ष्य से एक संगत एंड्रॉइड परिनियोजन होना है। मेजबान पक्ष के मुद्दे प्रत्येक कार्यान्वयन के दायरे में हैं और trout 1.1 के दायरे से बाहर हैं।

हमने trout 1.1 पर अतिरिक्त xTS सत्यापन नहीं किया है। trout 1.0 में सीटीएस समर्थन की नीचे दी गई चर्चा का संदर्भ लेना जारी रखें।

trout 1.0 में, कई सीटीएस मुद्दे बने हुए हैं। निम्नलिखित सीटीएस मॉड्यूल को परीक्षण विफलताओं को शामिल करने के लिए जाना जाता है:

CtsStgedInstallHostTestCases
CtsRollbackManagerHostTestCases
सीटीएसवीडियोटेस्टकेस
CtsHostsideNetworkTests
CtsActivityManagerBackgroundActivityTestCases
CtsAdbHostTestCases
CtsNativeHardwareTestCases
CtsContentTestCases
CtsCarHostTestCases
CtsOsTestCases
CtsStatsdHostTestCases
CtsVoiceInteractionTestCases
CtsViewTestCases
CtsCameraTestCases
CtsLocationGnssTestCases
CtsGraphicsTestCases
CtsIncidentHostTestCases
CtsInstallHostTestCases
CtsNativeVerifiedBootTestCases
CtsNetTestCases
CtsWindowManagerDeviceTestCases
CtsMediaStressTestCases
CtsAppTestCases
CtsUsbटेस्ट
CtsAutoFillServiceTestCases
CtsDisplayTestCases
CtsMediaTestCases
CtsDeqpTestCases
CtsDumpsysHostTestCases
CtsOpenGLTestCasesCtsLibcoreTestCases
CtsSecurityHostTestCases
CtsInputMethodTestCases
CtsStatsdAtomHostTestCases
CtsPermission4TestCases
सीटीएसएनएपीआईबेंचमार्कटेस्टकेस
CtsSimpleperfTestCases
सीटीएसएक्सेसिबिलिटीटेस्टकेस
CtsAppSecurityHostTestCases
CtsKeystoreTestCases

निम्नलिखित सीटीएस-वी क्षेत्रों को परीक्षण विफलताओं के लिए जाना जाता है:

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

रिलीज नोट्स

trout 1.1 में निम्नलिखित ज्ञात समस्याएँ हैं:

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

अतिरिक्त विवरण के लिए, trout की अपनी विशिष्ट तैनाती के लिए भागीदार रिलीज़ नोट्स देखें।