Android 11 में एक नया एचएएल, IDumpstateDevice (1.1 वर्शन) जोड़ा गया है. इस एचएएल की मदद से, वेंडर लॉग को ज़्यादा सटीक तरीके से स्कोप किया जा सकता है. ये लॉग, स्टैंडर्ड बग रिपोर्ट में शामिल होते हैं. साथ ही, उपयोगकर्ता के बिल्ड के लिए, वेंडर लॉगिंग को चालू और बंद करने की सुविधा भी मिलती है. उपयोगकर्ता के बिल्ड के लिए, यह सुविधा डिफ़ॉल्ट रूप से बंद रहती है. इससे OEM को इस बात पर ज़्यादा कंट्रोल मिलता है कि गड़बड़ी की अलग-अलग तरह की रिपोर्ट में क्या शामिल किया जाए.
अगर OEM इस वैकल्पिक एचएएल को लागू करते हैं, तो इस सुविधा का असर उन पर पड़ता है. इस बात पर SoCs पर असर पड़ सकता है कि OEM इस एचएएल के साथ क्या एक्सपोज़ करना चाहता है. इससे कैरियर पर कोई असर नहीं पड़ेगा.
गड़बड़ी की रिपोर्ट में क्या शामिल करना है, यह इस बात पर निर्भर करता है कि आपको डीबग करने के लिए कौनसी जानकारी ज़रूरी लगती है. हालांकि, आम तौर पर ज़्यादा जानकारी देना बेहतर होता है.
उदाहरण और सोर्स
IDumpstateDevice के 1.0 वर्शन (इस्तेमाल नहीं किया जा रहा) को डिफ़ॉल्ट रूप से लागू किया गया है. इसमें, dumpstate util लाइब्रेरी का इस्तेमाल करने का उदाहरण दिया गया है:
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
में मौजूद हैं.
इस एचएएल को लागू करने के लिए, हो सकता है कि कुछ सिस्टम प्रॉपर्टी, फ़ाइलों वगैरह में SEPolicy में कुछ बदलाव करने पड़ें, ताकि सब कुछ ठीक से काम कर सके. साथ ही, गड़बड़ी की रिपोर्ट में सभी ज़रूरी जानकारी डालने के लिए, वेंडर के साथ मिलकर काम करना पड़ेगा.
पसंद के मुताबिक बनाएं
डिवाइस का उपयोगकर्ता, डेवलपर सेटिंग का इस्तेमाल करके वेंडर लॉगिंग को चालू या बंद कर सकता है.
बंद होने पर भी, 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
है.