Android 11 में एक नया एचएएल, IDumpstateDevice (वर्शन 1.1) जोड़ा गया है. यह HAL, वेंडर के लॉग को ज़्यादा बारीकी से मॉनिटर करने के लिए नए तरीके उपलब्ध कराता है. ये लॉग, स्टैंडर्ड बग रिपोर्ट में शामिल होते हैं. साथ ही, यह HAL, उपयोगकर्ता के बिल्ड को वेंडर लॉगिंग चालू और बंद करने की अनुमति देता है. उपयोगकर्ता के बिल्ड के लिए, यह सुविधा डिफ़ॉल्ट रूप से बंद होती है. इससे ओईएम को यह तय करने का ज़्यादा कंट्रोल मिलता है कि किस तरह की गड़बड़ी की रिपोर्ट में क्या शामिल किया जाए.
अगर ओईएम इस वैकल्पिक एचएएल को लागू करते हैं, तो इस सुविधा का असर उन पर पड़ता है. इस HAL के साथ ओईएम क्या दिखाता है, इसके आधार पर 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 एचएएल के तरीकों को कॉल करता है. उदाहरण के लिए, dumpstateBoard को पूरा होने के लिए दिए गए टाइम आउट को बढ़ाया जा सकता है.
हालांकि, dumpstate.cpp के मुख्य लॉजिक में कोई बदलाव नहीं होना चाहिए.
टाइमआउट की वैल्यू कुछ भी हो सकती है. हालांकि, इससे बग रिपोर्ट को पूरा करने में लगने वाला समय बहुत ज़्यादा नहीं बढ़ना चाहिए. खास तौर पर,
DumpstateMode::CONNECTIVITY को बहुत कम समय में पूरा करना होता है. इसलिए, इसे जल्द से जल्द पूरा करना ज़रूरी है, ताकि मॉडम/वाई-फ़ाई/नेटवर्किंग से जुड़े सभी ज़रूरी लॉग इकट्ठा किए जा सकें.
सत्यापन
IDumpstateDevice को लागू करने के लिए, वीटीएस टेस्ट उपलब्ध है. साथ ही, सामान्य BugreportManager फ़ंक्शन के लिए फ़ंक्शनल यूनिट टेस्ट उपलब्ध हैं.
मैन्युअल टेस्ट केस का सुझाव दिया गया है:
frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java.