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

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

अगर OEM इस वैकल्पिक एचएएल को लागू करते हैं, तो इस सुविधा का असर उन पर पड़ता है. SoC पर असर पड़ सकता है. यह इस बात पर निर्भर करता है कि OEM इस एचएएल के साथ कौनसी जानकारी ज़ाहिर करने का विकल्प चुनता है. इससे मोबाइल और इंटरनेट सेवा देने वाली कंपनियों पर कोई असर नहीं पड़ेगा.

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

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

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

सोर्स कोड यहां मौजूद है:

  • HAL फ़ाइलें, hardware/interfaces/dumpstate/1.1/ में मौजूद हैं.
  • गड़बड़ी की रिपोर्ट के कॉन्टेंट को कंट्रोल करने वाला, dumpstate नेटिव कोड frameworks/native/cmds/dumpstate/ में मौजूद होता है.

लागू करना

इस एचएएल को लागू करने के लिए, android.hardware.dumpstate@1.1::IDumpstateDevice एचएएल इंटरफ़ेस लागू करें. DumpstateMode की कई वैल्यू हो सकती हैं. हालांकि, यह मुमकिन नहीं है कि सभी वैल्यू किसी एक डिवाइस पर काम करें. उदाहरण के लिए, Wear OS डिवाइसों के लिए WEAR.

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

यह सुविधा, Android 11 में शामिल किए गए कोर डंपस्टेट में हुए बदलावों पर निर्भर करती है. ये बदलाव, frameworks/native/cmds/dumpstate में मौजूद हैं.

इस एचएएल को लागू करने के लिए कुछ सिस्टम प्रॉपर्टी, फ़ाइलों वगैरह में एसईनीति में कुछ बदलाव करने पड़ सकते हैं, ताकि चीज़ें पूरी तरह से ठीक से काम करें. साथ ही, इसके लिए वेंडर के साथ मिलकर काम की पूरी जानकारी को गड़बड़ी की रिपोर्ट में डालना होगा.

पसंद के मुताबिक बनाएं

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

उदाहरण के लिए, dumpstateBoard को पूरा करने के लिए दिए गए टाइम आउट को बढ़ाने के लिए, dumpstate.cpp में बदलाव किया जा सकता है. इसे IDumpstateDevice HAL के तरीके कहा जाता है. हालांकि, dumpstate.cpp के मुख्य लॉजिक में कोई बदलाव नहीं होना चाहिए.

टाइमआउट की वैल्यू कोई भी हो सकता है. हालांकि, इससे गड़बड़ी की रिपोर्ट को पूरा होने में लगने वाले समय में बहुत ज़्यादा बढ़ोतरी नहीं होनी चाहिए. खास तौर पर, DumpstateMode::CONNECTIVITY का डेटा बहुत ज़्यादा समय तक इस्तेमाल किया जा सकता है. इसे मॉडम/वाई-फ़ाई/नेटवर्किंग के सभी ज़रूरी लॉग इकट्ठा करने के लिए, जल्द से जल्द चलाना चाहिए.

पुष्टि करें

IDumpstateDevice को लागू करने के लिए, VTS टेस्ट किया जाता है. साथ ही, BugreportManager की सामान्य सुविधाओं के लिए, फ़ंक्शनल यूनिट टेस्ट किए जाते हैं.

मैन्युअल टेस्ट के लिए सुझाया गया केस frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java है.