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

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

अगर ओईएम इस वैकल्पिक एचएएल को लागू करते हैं, तो इस सुविधा का असर उन पर पड़ता है. इस HAL के साथ OEM क्या दिखाता है, इसके आधार पर SoCs पर असर पड़ सकता है. इससे कैरियर पर कोई असर नहीं पड़ेगा.

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

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

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

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

  • एचएएल फ़ाइलें, 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 एचएएल को लागू करते हैं. जिन डिवाइसों में Android 11 से पहले ही IDumpstateDevice 1.0 लागू किया जा चुका है उन्हें 1.1 पर अपग्रेड करना आसान होना चाहिए. हमारा सुझाव है कि ऐसा ज़रूर करें, क्योंकि इससे बग रिपोर्ट में शामिल की गई गैर-ज़रूरी निजी जानकारी की मात्रा काफ़ी कम हो जाती है.

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

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

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

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

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

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

Validation

IDumpstateDevice को लागू करने के लिए, वीटीएस टेस्ट उपलब्ध है. साथ ही, सामान्य BugreportManager फ़ंक्शन के लिए फ़ंक्शनल यूनिट टेस्ट उपलब्ध हैं.

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