स्कोप्ड वेंडर लॉगिंग लागू करना

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

यदि ओईएम इस वैकल्पिक एचएएल को लागू करना चुनते हैं तो यह सुविधा ओईएम को प्रभावित करती है। SoCs प्रभावित हो सकते हैं, यह इस बात पर निर्भर करता है कि OEM इस HAL के साथ क्या प्रदर्शित करना चाहता है। वाहकों पर कोई अपेक्षित प्रभाव नहीं है।

आप बग रिपोर्ट में क्या शामिल करते हैं यह इस बात पर निर्भर करता है कि आपको डिबगिंग के लिए कौन सी जानकारी प्रासंगिक लगती है, लेकिन आम तौर पर अधिक शब्दाडंबर बेहतर होता है।

उदाहरण और स्रोत

IDumpstateDevice के (अप्रचलित) 1.0 संस्करण का एक डिफ़ॉल्ट कार्यान्वयन है जो डंपस्टेट उपयोग लाइब्रेरी का उपयोग करने का एक उदाहरण दिखाता है: frameworks/native/cmds/dumpstate/DumpstateUtil.h । 1.1 एचएएल का कटलफिश कार्यान्वयन भी है: device/google/cuttlefish/guest/monitoring/dumpstate_ext/*

स्रोत कोड यहां स्थित है:

  • एचएएल फ़ाइलें hardware/interfaces/dumpstate/1.1/ के अंतर्गत हैं।
  • डंपस्टेट नेटिव कोड जो बग रिपोर्ट सामग्री को नियंत्रित करता है frameworks/native/cmds/dumpstate/ के अंतर्गत है।

कार्यान्वयन

इस HAL को लागू करने के लिए, android.hardware.dumpstate@1.1::IDumpstateDevice HAL इंटरफ़ेस लागू करें। कई संभावित DumpstateMode मान हैं, लेकिन सभी को एक ही डिवाइस द्वारा समर्थित किए जाने की संभावना नहीं है (उदाहरण के लिए, गैर-पहनने वाले ओएस उपकरणों के लिए WEAR)।

डंपस्टेट एचएएल को लागू करना वैकल्पिक है। एंड्रॉइड 11 के साथ लॉन्च होने वाले सभी नए उपकरणों को IdumpstateDevice 1.1 लागू करना होगा यदि वे Dumpstate HAL लागू करते हैं। जिन डिवाइसों में Android 11 से पहले ही IDumpstateDevice 1.0 लागू हो चुका है, उन्हें 1.1 में अपग्रेड करना अपेक्षाकृत आसान होना चाहिए, और ऐसा करने की दृढ़ता से अनुशंसा की जाती है, क्योंकि यह बग रिपोर्ट में शामिल बाहरी निजी जानकारी की मात्रा को बहुत कम कर देता है।

यह सुविधा frameworks/native/cmds/dumpstate अंतर्गत स्थित एंड्रॉइड 11 के साथ शामिल कोर डंपस्टेट परिवर्तनों पर निर्भर करती है।

इस एचएएल को लागू करने के लिए चीजों को पूरी तरह से काम करने के लिए कुछ सिस्टम गुणों, फाइलों आदि में कुछ एसईपॉलिसी परिवर्तनों की आवश्यकता होगी, और सभी प्रासंगिक जानकारी को बग रिपोर्ट में डंप करने के लिए विक्रेताओं के साथ समन्वय की आवश्यकता होगी।

अनुकूलन

डिवाइस उपयोगकर्ता डेवलपर सेटिंग्स का उपयोग करके विक्रेता लॉगिंग को चालू या बंद कर सकता है। जब इसे बंद कर दिया जाता है, तो dumpstateBoard_1_1 अभी भी OEM द्वारा निर्धारित न्यूनतम आवश्यक जानकारी आउटपुट कर सकता है। विक्रेता लॉगिंग को बंद करने से IDumpstateDevice::dumpstateBoard बग रिपोर्ट में केवल आवश्यक जानकारी जोड़ता है, जबकि इसे चालू करने से OEM द्वारा चुनी गई सभी जानकारी शामिल हो जाती है।

उदाहरण के लिए, आप dumpstate.cpp (जो IDumpstateDevice HAL विधियों को कॉल करते हैं) को संशोधित कर सकते हैं, ताकि dumpstateBoard पूरा करने के लिए दिए गए टाइमआउट को बढ़ाया जा सके। हालाँकि, dumpstate.cpp का मूल तर्क अपरिवर्तित रहना चाहिए।

टाइमआउट का कोई भी मूल्य हो सकता है, लेकिन उन्हें बग रिपोर्ट को पूरा करने में लगने वाले समय में नाटकीय रूप से वृद्धि नहीं करनी चाहिए। विशेष रूप से, DumpstateMode::CONNECTIVITY समय के प्रति अत्यधिक संवेदनशील है और सभी प्रासंगिक मॉडेम/वाई-फाई/नेटवर्किंग लॉग को एकत्र करने के लिए इसे यथासंभव तेजी से चलाने की आवश्यकता है।

मान्यकरण

IDumpstateDevice कार्यान्वयन के लिए एक VTS परीक्षण है, और सामान्य BugreportManager कार्यक्षमता के लिए कार्यात्मक इकाई परीक्षण हैं।

अनुशंसित मैन्युअल परीक्षण केस frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java है।