कर्नेल का इस्तेमाल करके, Android 12 के साथ लॉन्च होने वाले डिवाइस
GKI कर्नेल के साथ शिप करने के लिए, v5.4 से बाद के वर्शन की ज़रूरत होती है. ताकि
पार्टनर, जीकेआई पर डेवलप करने के दौरान, यूज़रडीबग बिल्ड में DebugFS
को ऐक्सेस कर सकते हैं
कर्नेल के लिए, GKI defconfig में कर्नेल कॉन्फ़िगरेशन CONFIG_DEBUG_FS
सक्षम है.
डिवाइसों के लिए, उपयोगकर्ता के बिल्ड में DebugFS
को कभी माउंट न करें
Android 12 पर लॉन्च किया जाएगा.
उपयोगकर्ता बिल्ड के मुकाबले यूज़रडीबग बिल्ड में बेहतर टेस्ट कवरेज होता है. साथ ही,
टेस्टिंग के दौरान पूरी तरह से टेस्ट किया जाता है. नीचे दिया गया प्लान,
DebugFS
के ऐक्सेस के मामले में, दो बिल्ड टाइप के बीच का अंतर और
इनसे ये फ़ायदे मिलते हैं:
- यह
DebugFS
के आधार पर, यूज़रडीबग बिल्ड को गलती से रोकता है नए फ़ंक्शन के लिए - यह पक्का करता है कि DebugFS की कमी की वजह से काम करने वाले मौजूदा फ़ंक्शन में कोई गड़बड़ी हुई हो उसे डेवलपमेंट साइकल की शुरुआत में पता चल जाता है
Userdebug बिल्ड में DebugView के ऐक्सेस को इस कैटगरी में रखा जाता है अनुसरण करता है:
- डिवाइस बूट होने के दौरान
DebugFS
फ़ाइल शुरू होना, जैसे डीबग डेटा कलेक्शन को चालू करने के लिए,DebugFS
में किसी फ़ाइल में लिखने का ऐक्सेस. - गड़बड़ी की रिपोर्ट जनरेट होना: डंपस्टेट एचएएल,
DebugFS
फ़ाइलों को तब पढ़ता है, जबdumpstate
नेDumpstateBoard()
को शुरू किया है. यह जानकारी, गड़बड़ी की रिपोर्ट का हिस्सा बन जाती है. - अलग-अलग डिवाइस के हिसाब से जांच और पुष्टि करना.
नीचे दी गई टेबल में बताया गया है कि ये तीनों कैटगरी कैसी हैं
Android 12 में काम करता है. ध्यान दें कि
निम्न केवल उपयोगकर्ता डीबग बिल्ड पर लागू होता है, क्योंकि DebugFS
उपयोगकर्ता बिल्ड में माउंट किए जाते हैं.
इस्तेमाल का उदाहरण | Android 12 के लिए उपयोगकर्ता डीबग बिल्ड |
---|---|
स्टार्ट होने के दौरान, एक बार DebugFS फ़ाइलों को शुरू करना.
यह ऐक्सेस, बूट के दौरान सिर्फ़ एक बार मिलता है.
|
डंपस्टेट HAL यह काम एचएएल शुरू करने के दौरान करता है. इसे चालू करने के लिए,
एचएएल के शुरू होने से पहले, userडीबग बिल्ड में init DebugFS को माउंट करता है.
Init , DebugFS पर umount() को कॉल करता है, जब
डिवाइस को चालू किया जा चुका है.
|
गड़बड़ी की रिपोर्ट जनरेट करना: डंपस्टेट एचएएल ने पढ़ा
DebugFS फ़ाइलें, जो गड़बड़ी की रिपोर्ट का हिस्सा बन जाती हैं.
|
डंपस्टेट से शुरू किए जाने पर DumpstateBoard() में डंपस्टेट एचएएल के ज़रिए किया गया
(DumpstateDevice.cpp).
डंपस्टेट टूल (Android फ़्रेमवर्क का हिस्सा) यह पक्का करता है कि DebugFS
माउंट शामिल होने चाहिए.
|
अलग-अलग डिवाइस के हिसाब से जांच और पुष्टि करना | Adb रूट और शेल. DebugFS को adb शेल से माउंट करें
रूट ऐक्सेस1.
|
1adb shell
से DebugFS
को माउंट करने के लिए
रूट ऐक्सेस करने के लिए, इस निर्देश का इस्तेमाल करें:
adb shell mount -t debugfs debugfs /sys/kernel/debug
.
पार्टनर की ज़रूरी कार्रवाइयां
इन बदलावों के आधार पर, पार्टनर को ये शर्तें लागू करनी होंगी: Android 12 वाले डिवाइस:
DebugFS
नोड के बूट टाइम के सभी शुरू होने की प्रक्रिया को पूरा करें डंपस्टेट एचएएल शुरू करने के दौरान. इसे कैसे करना है, इसके उदाहरण के लिए, देखें डीएनएम:DebugFS
फ़ाइलों को बूट करने के समय को शुरू करने के तरीके का उदाहरण.- रनटाइम के दौरान,
DebugFS
को ऐक्सेस करने की अनुमति न दें. नीचे दिए गए अपवाद लागू करें:- गड़बड़ी की रिपोर्ट जनरेट होना (यह डंपस्टेट एचएएल से आता है)
- जांच और पुष्टि करना (
adb root
औरshell
इसे ऐक्सेस कर सकते हैं - पक्का करें कि DebugFS पहले माउंट किया गया हो)
डेवलपर, डीबग के लिए परसिस्टेंट प्रॉपर्टी को सेट कर सकते हैं
DebugFs
को माउंट रखने के लिए persist.dbg.keep_debugfs_mounted
उपयोगकर्ता डीबग और इंजीनियरिंग बिल्ड पर रीबूट करता है.
GTS के अनुपालन जांच से पक्का होता है कि DebugFS
फ़ाइलसिस्टम
उपयोगकर्ता बिल्ड में माउंट किए जाते हैं. Sepolicy neverallow
स्टेटमेंट से यह पक्का होता है कि डिवाइसों में
Android 12 या उसके बाद के वर्शन पर लॉन्च किया जा रहा हो, तो बिना मंज़ूरी वाली प्रोसेस की अनुमति नहीं दी जाती
DebugFs
का ऐक्सेस.