परफ़ॉर्मेंस को बेहतर बनाने के लिए गाइड
परफ़ॉर्मेंस स्पॉटलाइट हफ़्ते के चौथे दिन आपका स्वागत है. हमने हाल ही में कुछ बेहतरीन टूल और सबसे सही तरीके लॉन्च किए हैं. जैसे, R8 ऑप्टिमाइज़र, बेसलाइन प्रोफ़ाइल और स्टार्टअप प्रोफ़ाइल के साथ प्रोफ़ाइल गाइडेड ऑप्टिमाइज़ेशन. अब आपके मन में यह सवाल उठ रहा होगा कि परफ़ॉर्मेंस को बेहतर बनाने के लिए कहां से शुरुआत की जाए.
हमने परफ़ॉर्मेंस लेवलिंग के लिए, चरण-दर-चरण गाइड तैयार की है. इससे आपकी मोबाइल डेवलपमेंट टीम को मदद मिलेगी. चाहे आपके पास एक डेवलपर वाला ऐप्लिकेशन हो और आपको परफ़ॉर्मेंस से जुड़ी जानकारी चाहिए हो या आपके पास Android की परफ़ॉर्मेंस को बेहतर बनाने के लिए पूरी टीम हो, यह गाइड आपके लिए मददगार साबित होगी.
परफ़ॉर्मेंस लेवलिंग गाइड में पांच लेवल होते हैं. हम लेवल 1 से शुरुआत करेंगे. इसमें परफ़ॉर्मेंस टूलिंग को कम से कम इस्तेमाल करने के बारे में बताया गया है. इसके बाद, हम लेवल 5 तक जाएंगे. यह उन ऐप्लिकेशन के लिए सबसे सही है जिनके पास परफ़ॉर्मेंस फ़्रेमवर्क को बनाए रखने के लिए संसाधन हैं.
उस लेवल पर जाएं जो आपके लिए सबसे ज़्यादा काम का है:
- लेवल 1: Play Console में उपलब्ध फ़ील्ड मॉनिटरिंग का इस्तेमाल करें
- लेवल 2: ऐप्लिकेशन की परफ़ॉर्मेंस के स्कोर से जुड़े ऐक्शन आइटम को पूरा करना
- लेवल 3: स्थानीय परफ़ॉर्मेंस टेस्ट फ़्रेमवर्क का फ़ायदा पाना
- चौथा लेवल: Perfetto जैसे ट्रेस विश्लेषण टूल का इस्तेमाल करना
- लेवल 5: परफ़ॉर्मेंस ट्रैकिंग का अपना फ़्रेमवर्क बनाना
लेवल 1: Play Console में उपलब्ध फ़ील्ड मॉनिटरिंग का इस्तेमाल करें
हमारा सुझाव है कि Play Console में Android की ज़रूरी जानकारी का इस्तेमाल करके, फ़ील्ड मॉनिटरिंग का अपने-आप इकट्ठा हुआ डेटा देखें. इससे आपको अपने ऐप्लिकेशन के बारे में कम मेहनत में अहम जानकारी मिल पाएगी.
Android की ज़रूरी जानकारी, Google की एक पहल है. इसके तहत, इस फ़ील्ड का डेटा आपके लिए अपने-आप इकट्ठा किया जाता है और दिखाया जाता है.
हम यह डेटा कैसे उपलब्ध कराते हैं, इस बारे में यहां बताया गया है:
- डेटा इकट्ठा करना: जब कोई उपयोगकर्ता इस सुविधा के लिए ऑप्ट-इन करता है, तो उसके Android डिवाइस पर सभी ऐप्लिकेशन के मुख्य परफ़ॉर्मेंस और स्थिरता से जुड़े इवेंट अपने-आप लॉग हो जाते हैं. इसमें आपका ऐप्लिकेशन भी शामिल है.
- एग्रीगेट किया गया डेटा: Google Play, आपके ऐप्लिकेशन के उपयोगकर्ताओं से यह डेटा इकट्ठा करता है और इसमें मौजूद पहचान छिपाने वाली जानकारी हटा देता है.
- इनसाइट की जानकारी देने वाले प्लैटफ़ॉर्म: यह डेटा, आपको Google Play Console में Android की ज़रूरी जानकारी वाले डैशबोर्ड में दिखता है.
'Android की ज़रूरी जानकारी' वाले डैशबोर्ड में कई मेट्रिक ट्रैक की जाती हैं. हालांकि, कुछ मेट्रिक को ज़रूरी जानकारी के तौर पर तय किया जाता है. ये सबसे अहम मेट्रिक हैं, क्योंकि इनसे Google Play Store पर आपके ऐप्लिकेशन के दिखने और उसकी रैंकिंग पर असर पड़ सकता है.
वेबसाइट की परफ़ॉर्मेंस की अहम जानकारी
Google Play की तकनीकी क्वालिटी से जुड़ी मुख्य मेट्रिक Google Play पर अपने ऐप्लिकेशन को ज़्यादा से ज़्यादा लोगों को दिखाने के लिए, इन मेट्रिक के लिए ऐप्लिकेशन की खराब परफ़ॉर्मेंस के थ्रेशोल्ड से कम वैल्यू रखें. | |
| यूज़र-पर्सीव्ड क्रैश रेट | हर दिन के ऐसे सक्रिय उपयोगकर्ताओं का प्रतिशत जिन्होंने कम से कम एक बार ऐप्लिकेशन क्रैश होने की ऐसी गड़बड़ी का सामना किया जिसके बारे में उन्हें पता चला |
| यूज़र-पर्सीव्ड ANR रेट | हर दिन के ऐसे सक्रिय उपयोगकर्ताओं का प्रतिशत जिन्होंने कम से कम एक बार ऐसी ANR की गड़बड़ी का सामना किया जिसके बारे में उन्हें पता चला |
| ज़्यादा बैटरी खर्च हुई | वॉच फ़ेस के ऐसे बैटरी सेशन का प्रतिशत जिसमें डिवाइस की बैटरी, हर घंटे 4.44% से ज़्यादा खर्च हुई |
| नई मेट्रिक: पार्शियल वेक लॉक का ज़्यादा इस्तेमाल हुआ | उन उपयोगकर्ता सेशन का प्रतिशत जिनमें वेक लॉक के इस्तेमाल का कुल समय दो घंटे से ज़्यादा है. हालांकि, इसमें वेक लॉक के इस्तेमाल के ऐसे समय को शामिल नहीं किया गया है जिसे छूट मिली हुई है |
वेबसाइट की परफ़ॉर्मेंस की जानकारी में, यूज़र पर्सीव्ड क्रैश रेट, एएनआर रेट, बैटरी का ज़्यादा इस्तेमाल, और हाल ही में जोड़ी गई मेट्रिक, यानी कि डिवाइस के चालू रहने पर स्क्रीन बंद होने की स्थिति में बैटरी का ज़्यादा इस्तेमाल शामिल है.
यूज़र-पर्सीव्ड एएनआर रेट
Android की ज़रूरी जानकारी वाले एएनआर डैशबोर्ड का इस्तेमाल करके, फ़ील्ड में होने वाली समस्याओं के स्टैक ट्रेस देखे जा सकते हैं. साथ ही, समस्या को ठीक करने के बारे में अहम जानकारी और सुझाव पाए जा सकते हैं.
किसी एएनआर की समस्या के बारे में ज़्यादा जानकारी देखी जा सकती है. इससे स्टैक ट्रेस के साथ-साथ, समस्या की वजह के बारे में अहम जानकारी भी मिलती है.
साथ ही, एएनआर से जुड़े दिशा-निर्देश देखें. इससे आपको एएनआर की समस्या का पता लगाने और उसे ठीक करने में मदद मिलेगी.
यूज़र-पर्सीव्ड क्रैश रेट
क्रैश की गड़बड़ियों को और ज़्यादा डीबग करने के लिए, Android की ज़रूरी जानकारी वाला क्रैश डैशबोर्ड का इस्तेमाल करें. साथ ही, अपने ऐप्लिकेशन में होने वाले स्टैक ट्रेस का सैंपल देखें.
हमारे दस्तावेज़ में, क्रैश से जुड़ी समस्याओं को हल करने के बारे में भी जानकारी दी गई है. उदाहरण के लिए, फ़ोरग्राउंड सेवाओं से जुड़ी समस्या हल करने की गाइड में, क्रैश होने की सामान्य स्थितियों का पता लगाने और उन्हें ठीक करने के तरीकों के बारे में बताया गया है.
ज़्यादा बैटरी खर्च हुई
Wear OS पर, वॉच फ़ेस के ऐसे सेशन की संख्या कम करें जिनमें बैटरी ज़्यादा खर्च होती है. इसके लिए, बैटरी की परफ़ॉर्मेंस को बेहतर बनाने और बैटरी बचाने के तरीके के बारे में Wear गाइड देखें.
[नई सुविधा] पार्शियल वेक लॉक का ज़्यादा इस्तेमाल
हमने हाल ही में यह एलान किया था कि पार्शियल वेक लॉक के ज़्यादा इस्तेमाल के थ्रेशोल्ड को पार करने वाले ऐप्लिकेशन के लिए, 1 मार्च, 2026 से अतिरिक्त कार्रवाइयां की जा सकती हैं.
मोबाइल डिवाइसों के लिए, Android vitals मेट्रिक उन वेक लॉक पर लागू होती है जिन्हें स्क्रीन बंद होने पर हासिल किया गया हो. साथ ही, ऐप्लिकेशन बैकग्राउंड में चल रहा हो या फ़ोरग्राउंड सेवा चला रहा हो. अगर 24 घंटे की अवधि में वेक लॉक कम से कम दो घंटे तक चालू रहते हैं और इससे आपके ऐप्लिकेशन के 5% से ज़्यादा सेशन पर असर पड़ता है, तो Android की ज़रूरी जानकारी के मुताबिक, वेक लॉक का इस्तेमाल बहुत ज़्यादा माना जाता है. यह औसत 28 दिनों के हिसाब से निकाला जाता है.
वेक लॉक की ज़्यादा समस्याओं को डीबग करने और ठीक करने के लिए, हमारी तकनीकी ब्लॉग पोस्ट देखें.
हमारे Android की ज़रूरी जानकारी वाले दस्तावेज़ देखें और Android की ज़रूरी जानकारी का बेहतर तरीके से इस्तेमाल करना जारी रखें.
लेवल 2: ऐप्लिकेशन की परफ़ॉर्मेंस के स्कोर से जुड़े ऐक्शन आइटम को पूरा करना
इसके बाद, ऐप्लिकेशन परफ़ॉर्मेंस स्कोर का इस्तेमाल करके, ऐसे ऐक्शन आइटम ढूंढें जिनसे ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाया जा सके.
Android ऐप्लिकेशन परफ़ॉर्मेंस स्कोर, आपके ऐप्लिकेशन की तकनीकी परफ़ॉर्मेंस को मेज़र करने का एक स्टैंडर्ड फ़्रेमवर्क है. इससे आपको 0 से 100 के बीच का स्कोर मिलता है. कम स्कोर का मतलब है कि काफ़ी सुधार किया जा सकता है.
आसानी से जीत हासिल करने के लिए, आपको सबसे पहले स्टैटिक परफ़ॉर्मेंस स्कोर से शुरुआत करनी चाहिए. ये अक्सर कॉन्फ़िगरेशन में बदलाव या टूलिंग अपडेट होते हैं, जिनसे परफ़ॉर्मेंस में काफ़ी सुधार होता है.
पहला चरण: स्टैटिक असेसमेंट करना
स्टैटिक असेसमेंट से, आपके प्रोजेक्ट के कॉन्फ़िगरेशन और टूल के इस्तेमाल का आकलन किया जाता है. आम तौर पर, परफ़ॉर्मेंस को बेहतर बनाने के ये सबसे तेज़ तरीके होते हैं.
स्कोरबोर्ड पेज के स्टैटिक स्कोर सेक्शन पर जाएं और यह तरीका अपनाएं:
- Android Gradle प्लगिन (AGP) के वर्शन का आकलन करें.
- ऐप्लिकेशन के कोड को छोटा करने और उसे ऑप्टिमाइज़ करने के लिए, R8 को धीरे-धीरे लागू करें या बेहतर होगा कि R8 को फ़ुल मोड में इस्तेमाल करें.
- बेसलाइन प्रोफ़ाइलें अपनाएं. इससे पहली बार लॉन्च करने पर कोड के एक्ज़ीक्यूट होने की स्पीड बेहतर होती है. साथ ही, हर नए ऐप्लिकेशन इंस्टॉल और हर ऐप्लिकेशन अपडेट के लिए परफ़ॉर्मेंस बेहतर होती है.
- Dex लेआउट को बेहतर बनाने के लिए, स्टार्टअप प्रोफ़ाइल का इस्तेमाल करें. स्टार्टअप प्रोफ़ाइलें, बिल्ड सिस्टम इस्तेमाल करता है. इससे, आपकी APK की DEX फ़ाइलों में मौजूद कोड के लेआउट को बेहतर बनाकर, उनमें मौजूद क्लास और तरीकों को और ऑप्टिमाइज़ किया जा सकता है.
- Jetpack Compose के नए वर्शन में अपग्रेड करना
दूसरा चरण: डाइनैमिक असेसमेंट करना
स्टैटिक ईज़ी विन लागू करने के बाद, डाइनैमिक असेसमेंट का इस्तेमाल करके, किसी असली डिवाइस पर हुए सुधारों की पुष्टि करें. इसके लिए, पहले किसी डिवाइस और स्टॉप वॉच का इस्तेमाल करके मैन्युअल तरीके से जांच करें.
स्कोरबोर्ड पेज के डाइनैमिक स्कोर सेक्शन पर जाएं और ये काम करें:
- किसी फ़िज़िकल डिवाइस की मदद से, टेस्ट एनवायरमेंट सेट अप करें. परफ़ॉर्मेंस से जुड़ी समस्याओं को ज़्यादा दिखाने के लिए, कम कॉन्फ़िगरेशन वाले डिवाइस का इस्तेमाल करें. इससे समस्याओं का पता लगाना आसान हो जाता है.
- लॉन्चर से स्टार्टअप समय मेज़र करें. लॉन्चर आइकॉन से अपने ऐप्लिकेशन को कोल्ड स्टार्ट करें. इसके बाद, ऐप्लिकेशन के इंटरैक्टिव होने तक का समय मेज़र करें.
- सूचना से ऐप्लिकेशन के चालू होने में लगने वाले समय को मेज़र करें. हमारा लक्ष्य है कि सूचना से ऐप्लिकेशन के चालू होने में लगने वाला समय कुछ सेकंड से कम हो.
- अपनी मुख्य स्क्रीन और ऐनिमेशन पर स्क्रोल करके, रेंडरिंग की परफ़ॉर्मेंस को मेज़र करें.
इन चरणों को पूरा करने के बाद, आपको स्टैटिक और डाइनैमिक स्कोर के लिए 1 से 100 के बीच स्कोर मिलेगा. इससे आपको अपने ऐप्लिकेशन की परफ़ॉर्मेंस के बारे में पता चलेगा. साथ ही, यह भी पता चलेगा कि आपको किस पर ध्यान देना है.
लेवल 3: स्थानीय परफ़ॉर्मेंस टेस्ट फ़्रेमवर्क का फ़ायदा पाना
डाइनैमिक परफ़ॉर्मेंस का आकलन शुरू करने के बाद, आपको मैन्युअल तरीके से परफ़ॉर्मेंस मेज़र करना मुश्किल लग सकता है. परफ़ॉर्मेंस टेस्ट के लिए, ऑटोमेशन का इस्तेमाल करें. इसके लिए, Macrobenchmarks और UiAutomator जैसे परफ़ॉर्मेंस टेस्ट फ़्रेमवर्क का इस्तेमाल करें.
Macrobenchmark 💚 UiAutomator
Macrobenchmark और UiAutomator को एक साथ काम करने वाले दो टूल के तौर पर देखें: Macrobenchmark, मेज़रमेंट टूल है. यह स्टॉपवॉच और फ़्रेम-रेट काउंटर की तरह होता है, जो आपके ऐप्लिकेशन के बाहर काम करता है. यह आपके ऐप्लिकेशन को शुरू करने, मेट्रिक रिकॉर्ड करने (जैसे, स्टार्टअप का समय या ड्रॉप किए गए फ़्रेम) और ऐप्लिकेशन को बंद करने के लिए ज़िम्मेदार होता है. UiAutomator, रोबोट उपयोगकर्ता होता है. इस लाइब्रेरी की मदद से, डिवाइस की स्क्रीन के साथ इंटरैक्ट करने के लिए कोड लिखा जा सकता है. यह किसी आइकॉन को ढूंढ सकता है, किसी बटन पर टैप कर सकता है, किसी सूची को स्क्रोल कर सकता है वगैरह.
टेस्ट लिखने का तरीका
टेस्ट लिखते समय, UiAutomator कोड को Macrobenchmark ब्लॉक में रैप किया जाता है.
-
टेस्ट तय करना:
@MacrobenchmarkRule -
मेज़रमेंट शुरू करें: कॉल
benchmarkRule.measureRepeated. - यूज़र इंटरफ़ेस (यूआई) को ड्राइव करना: उस ब्लॉक में, UiAutomator कोड का इस्तेमाल करके अपना ऐप्लिकेशन लॉन्च करें, यूज़र इंटरफ़ेस (यूआई) एलिमेंट ढूंढें, और उनसे इंटरैक्ट करें.
स्क्रोलिंग जैंक की जांच करने के लिए, कंपोज़ लिस्ट का उदाहरण देने वाला कोड स्निपेट यहां दिया गया है.
benchmarkRule.measureRepeated(
// ...
metrics = listOf(
FrameTimingMetric(),
),
startupMode = StartupMode.COLD,
iterations = 10,
) {
// 1. Launch the app's main activity
startApp()
// 2. Find the list using its resource ID and scroll down
onElement { viewIdResourceName == "$packageName.my_list" }
.fling(Direction.DOWN)
}
4. नतीजों की समीक्षा करें: हर टेस्ट रन से आपको सटीक जानकारी मिलती है. इससे आपको अपने ऐप्लिकेशन की परफ़ॉर्मेंस के बारे में सबसे अच्छा डेटा मिलता है.
timeToInitialDisplayMs min 1894.4, median 2847.4, max 3355.6 frameOverrunMs P50 -3.2, P90 6.2, P95 10.4, P99 119.5
इस्तेमाल के सामान्य उदाहरण
मैक्रोबेंचमार्क में, डिफ़ॉल्ट रूप से कई मुख्य मेट्रिक उपलब्ध होती हैं. StartupTimingMetric की मदद से, ऐप्लिकेशन के चालू होने की प्रोसेस को सटीक तरीके से मेज़र किया जा सकता है. FrameTimingMetric की मदद से, टेस्ट के दौरान किसी ऐप्लिकेशन की रेंडरिंग परफ़ॉर्मेंस को समझा जा सकता है.
मैक्रोबेंचमार्क और UiAutomator को इस्तेमाल करने के बारे में पूरी जानकारी देने वाली गाइड उपलब्ध है. साथ ही, इसमें कोड के सैंपल भी दिए गए हैं, ताकि आप इनके बारे में ज़्यादा जान सकें.
चौथा लेवल: Perfetto जैसे ट्रेस विश्लेषण टूल का इस्तेमाल करें
जब आपको अपने ऐप्लिकेशन कोड से आगे की जानकारी देखनी होती है, तब Perfetto जैसे ट्रेस विश्लेषण टूल का इस्तेमाल किया जाता है. स्टैंडर्ड डिबगर या प्रोफ़ाइलर सिर्फ़ आपकी प्रोसेस देखते हैं. इसके उलट, Perfetto पूरे डिवाइस की स्थिति को कैप्चर करता है. जैसे, कर्नल शेड्यूलिंग, सीपीयू फ़्रीक्वेंसी, अन्य प्रोसेस, और सिस्टम सेवाएं. इससे आपको परफ़ॉर्मेंस से जुड़ी समस्याओं के बारे में पूरी जानकारी मिलती है.
सिस्टम ट्रेस, Android Studio Profiler, और Perfetto का इस्तेमाल करके परफ़ॉर्मेंस डीबग करने के बारे में वीडियो निर्देश पाने के लिए, हमारी परफ़ॉर्मेंस डीबग करने से जुड़ी YouTube प्लेलिस्ट देखें.
परफ़ॉर्मेंस को डीबग करने के लिए Perfetto का इस्तेमाल कैसे करें
ट्रेस विश्लेषण टूल का इस्तेमाल करके, परफ़ॉर्मेंस को डीबग करने का सामान्य वर्कफ़्लो यह है: ट्रेस को रिकॉर्ड करना, लोड करना, और उसका विश्लेषण करना.
पहला चरण: ट्रेस रिकॉर्ड करना
सिस्टम ट्रेस को कई तरीकों से रिकॉर्ड किया जा सकता है:
- डिवाइस पर मैन्युअल तरीके से ट्रेस रिकॉर्ड करना. इसके लिए, सीधे डेवलपर विकल्पों से ट्रेस रिकॉर्ड करें.
- Android Studio CPU Profiler का इस्तेमाल करना
- Perfetto यूज़र इंटरफ़ेस का इस्तेमाल करना
दूसरा चरण: ट्रेस लोड करना
ट्रेस फ़ाइल मिलने के बाद, आपको इसे विश्लेषण टूल में लोड करना होगा.
- Chrome खोलें और ui.perfetto.dev पर जाएं.
-
अपनी
.perfetto-trace(या.pftrace) फ़ाइल को खींचकर सीधे ब्राउज़र विंडो में छोड़ें. - यूज़र इंटरफ़ेस (यूआई), फ़ाइल को प्रोसेस करेगा और टाइमलाइन दिखाएगा.
तीसरा चरण: ट्रेस का विश्लेषण करना
परफ़ॉर्मेंस से जुड़ी समस्याओं की जांच करने के लिए, Perfetto UI या Android Studio Profiler का इस्तेमाल किया जा सकता है. परफ़ॉर्मेंस से जुड़ी MAD Skills सीरीज़ का यह एपिसोड देखें. इसमें हमारी परफ़ॉर्मेंस इंजीनियर, कार्मेन जैक्सन ने Perfetto traceviewer के बारे में बताया है.
Perfetto का इस्तेमाल करके सिस्टम ट्रेस की जांच करने के उदाहरण
Perfetto एक एक्सपर्ट टूल है. यह Android डिवाइस पर हुई हर गतिविधि के बारे में जानकारी दे सकता है. यह जानकारी, ट्रेस कैप्चर करने के दौरान की होती है. यह खास तौर पर तब मददगार होता है, जब स्टैंडर्ड लॉग या बुनियादी प्रोफ़ाइलर का इस्तेमाल करके, परफ़ॉर्मेंस में गिरावट की मुख्य वजह का पता नहीं लगाया जा सकता.
जंक (ड्रॉप किए गए फ़्रेम) को डीबग करना
अगर स्क्रोल करते समय आपका ऐप्लिकेशन अटकता है, तो Perfetto आपको यह दिखा सकता है कि कोई खास फ़्रेम अपनी समयसीमा से क्यों चूक गया.
अगर ऐसा ऐप्लिकेशन की वजह से हो रहा है, तो आपको दिख सकता है कि आपकी मुख्य थ्रेड लंबे समय तक चल रही है और उसमें पार्सिंग का काम हो रहा है. इससे उन स्थितियों का पता चलता है जहां आपको काम को एसिंक्रोनस प्रोसेसिंग में ले जाना चाहिए.
अगर सिस्टम की वजह से ऐसा हो रहा है, तो हो सकता है कि आपको अपनी मुख्य थ्रेड चलने के लिए तैयार दिखे. हालांकि, सीपीयू कर्नल शेड्यूलर ने किसी दूसरी सिस्टम सेवा को प्राथमिकता दी हो. इस वजह से, आपका ऐप्लिकेशन इंतज़ार कर रहा हो (सीपीयू कंटेंशन). इससे उन स्थितियों के बारे में पता चलता है जिनमें आपको प्लैटफ़ॉर्म एपीआई के इस्तेमाल को ऑप्टिमाइज़ करने की ज़रूरत पड़ सकती है.
ऐप्लिकेशन के शुरू होने में ज़्यादा समय लगने की समस्या का विश्लेषण करना
स्टार्टअप एक जटिल प्रोसेस है. इसमें सिस्टम को शुरू करना, प्रोसेस फ़ोर्क करना, और संसाधन लोड करना शामिल है. Perfetto इस टाइमलाइन को सटीक तरीके से दिखाता है.
इससे पता चलता है कि Binder कॉल (इंटर-प्रोसेस कम्यूनिकेशन) के लिए इंतज़ार किया जा रहा है या नहीं. अगर आपका onCreate सिस्टम से जवाब पाने के लिए लंबे समय तक इंतज़ार करता है PackageManager, तो Perfetto साफ़ तौर पर दिखाएगा कि यह ब्लॉक हो गया है.
यह भी देखा जा सकता है कि ऐप्लिकेशन शुरू होने के दौरान, क्या आपका ऐप्लिकेशन ज़रूरत से ज़्यादा काम कर रहा है. उदाहरण के लिए, अगर ऐप्लिकेशन को दिखाने के लिए ज़रूरी व्यू से ज़्यादा व्यू बनाए और लेआउट किए जा रहे हैं, तो आपको ट्रेस में ये कार्रवाइयां दिख सकती हैं.
बैटरी के तेज़ी से खर्च होने और सीपीयू के इस्तेमाल की जांच करना
Perfetto पूरे सिस्टम को देखता है. इसलिए, यह बैटरी की खपत करने वाली उन प्रक्रियाओं का पता लगाने के लिए सबसे सही टूल है जो दिखती नहीं हैं.
यह पता लगाया जा सकता है कि कौनसी प्रोसेस वेक लॉक को होल्ड कर रही हैं. इससे यह पता चलता है कि “डिवाइस की स्थिति” ट्रैक के तहत, डिवाइस को स्लीप मोड में जाने से रोका जा रहा है. ज़्यादा जानने के लिए, हमारी वेक लॉक से जुड़ी ब्लॉग पोस्ट पढ़ें. यह देखने के लिए Perfetto का इस्तेमाल करें कि क्या बैकग्राउंड में चल रही आपकी जॉब बहुत बार चल रही हैं या सीपीयू को बिना वजह चालू कर रही हैं.
लेवल 5: परफ़ॉर्मेंस ट्रैकिंग का अपना फ़्रेमवर्क बनाना
आखिरी लेवल उन ऐप्लिकेशन के लिए है जिनके पास परफ़ॉर्मेंस ट्रैकिंग फ़्रेमवर्क को बनाए रखने के लिए संसाधन वाली टीमें हैं.
Android पर परफ़ॉर्मेंस ट्रैकिंग का कस्टम फ़्रेमवर्क बनाने के लिए, कई सिस्टम एपीआई का इस्तेमाल करना पड़ता है. इससे ऐप्लिकेशन की लाइफ़साइकल के दौरान डेटा कैप्चर किया जा सकता है. जैसे, स्टार्टअप से लेकर ऐप्लिकेशन बंद होने तक और ज़्यादा लोड वाले खास समय में.
ApplicationStartInfo, ProfilingManager, और ApplicationExitInfo का इस्तेमाल करके, एक मज़बूत टेलीमेट्री सिस्टम बनाया जा सकता है. यह सिस्टम, आपके ऐप्लिकेशन के शुरू होने के तरीके के बारे में रिपोर्ट करता है. साथ ही, यह ऐप्लिकेशन के चलने के दौरान की गई गतिविधियों के बारे में पूरी जानकारी देता है. इसके अलावा, यह ऐप्लिकेशन के बंद होने की वजह भी बताता है.
ApplicationStartInfo: यह ट्रैक करता है कि ऐप्लिकेशन कैसे शुरू हुआ
Android 15 (एपीआई 35) से उपलब्ध, ApplicationStartInfo फ़ील्ड में ऐप्लिकेशन के स्टार्टअप के बारे में ज़्यादा जानकारी वाली मेट्रिक उपलब्ध कराता है. इस डेटा में यह जानकारी शामिल होती है कि स्टार्टअप कोल्ड, वॉर्म या हॉट था या नहीं. साथ ही, इसमें स्टार्टअप के अलग-अलग चरणों की अवधि भी शामिल होती है.
इससे आपको प्रोडक्शन डेटा का इस्तेमाल करके, स्टार्टअप मेट्रिक की बेसलाइन डेवलप करने में मदद मिलती है. इससे उस मेट्रिक को और ऑप्टिमाइज़ किया जा सकता है जिसे स्थानीय तौर पर फिर से बनाना मुश्किल हो सकता है. इन मेट्रिक का इस्तेमाल करके, स्टार्टअप फ़्लो को ऑप्टिमाइज़ करने के लिए A/B टेस्ट चलाए जा सकते हैं.
इसका मकसद, हर शुरुआती चरण को मैन्युअल तरीके से इंस्ट्रुमेंट किए बिना, लॉन्च मेट्रिक को सटीक तरीके से रिकॉर्ड करना है.
ऐप्लिकेशन लॉन्च होने के कुछ समय बाद, इस डेटा के लिए क्वेरी की जा सकती है.
ProfilingManager: Capturing why it was slow
ProfilingManager (API 35) की मदद से, आपका ऐप्लिकेशन उपयोगकर्ता के डिवाइसों पर सिस्टम ट्रेस को प्रोग्राम के हिसाब से ट्रिगर कर सकता है. इससे परफ़ॉर्मेंस से जुड़ी ऐसी समस्याओं का पता लगाने में मदद मिलती है जिन्हें स्थानीय तौर पर दोहराया नहीं जा सकता.
इसका मकसद यह है कि जब किसी खास उपयोगकर्ता के लिए बहुत ज़रूरी प्रोसेस के धीमे चलने या परफ़ॉर्मेंस से जुड़ी समस्याओं का पता चले, तो ट्रेस अपने-आप रिकॉर्ड हो जाए.
एक लिसनर रजिस्टर किया जा सकता है, जो कुछ खास शर्तों के पूरा होने पर ट्रिगर होता है. इसके अलावा, परफ़ॉर्मेंस से जुड़ी कोई समस्या (जैसे कि जंक, बहुत ज़्यादा मेमोरी या बैटरी खत्म होना) का पता चलने पर, इसे मैन्युअल तरीके से भी ट्रिगर किया जा सकता है.
प्रोफ़ाइल कैप्चर करने, प्रोफ़ाइलिंग डेटा को वापस पाने और उसका विश्लेषण करने, और डीबग कमांड इस्तेमाल करने के बारे में जानने के लिए, हमारा दस्तावेज़ पढ़ें.
ApplicationExitInfo: यह ट्रैक करता है कि ऐप्लिकेशन बंद क्यों हुआ
ApplicationExitInfo (एपीआई 30) से पता चलता है कि आपकी पिछली प्रोसेस क्यों बंद हुई. यह नेटिव क्रैश, एएनआर या बहुत ज़्यादा मेमोरी इस्तेमाल (ओओएम) की वजह से सिस्टम बंद होने की समस्याओं का पता लगाने के लिए ज़रूरी है. एपीआई getTraceInputStream का इस्तेमाल करके, आपको स्टैक ट्रेस की ज़्यादा जानकारी भी मिल सकेगी.
इस एपीआई का मकसद, स्थिरता से जुड़ी उन समस्याओं को समझना है जो स्टैंडर्ड Java क्रैश रिपोर्टर (जैसे कि कम मेमोरी की वजह से बंद होना) को ट्रिगर नहीं करती हैं.
आपको इस एपीआई को अगले ऐप्लिकेशन लॉन्च पर ट्रिगर करना चाहिए.
अगले चरण
Android की परफ़ॉर्मेंस को बेहतर बनाने के लिए, आपको एक-एक करके कई काम करने होंगे. हमें यह देखने का बेसब्री से इंतज़ार है कि इन टूल का इस्तेमाल करके, आप अपनी परफ़ॉर्मेंस को कैसे बेहतर बनाते हैं!
Android के बारे में सवाल पूछने के लिए, कल हमारे साथ जुड़ें
आपने R8 की मदद से अपने ऐप्लिकेशन का साइज़ कम कर लिया है और प्रोफ़ाइल गाइडेड ऑप्टिमाइज़ेशन की मदद से रनटाइम को ऑप्टिमाइज़ कर लिया है. साथ ही, अपने ऐप्लिकेशन की परफ़ॉर्मेंस को मेज़र करें.
Android से जुड़े सवालों के जवाब पाने के लिए, कल होने वाले लाइव सेशन में शामिल हों. #AskAndroid का इस्तेमाल करके, अभी अपने सवाल पूछें और विशेषज्ञों से उनके जवाब पाएं.
पढ़ना जारी रखें
-
कैसे करें
Google को पता है कि Android उपयोगकर्ताओं के लिए, बैटरी का ज़्यादा खर्च होना एक बड़ी समस्या है. इसलिए, Google ने डेवलपर की मदद करने के लिए कई अहम कदम उठाए हैं, ताकि वे कम बैटरी खर्च करने वाले ऐप्लिकेशन बना सकें.
Alice Yuan • आठ मिनट में पढ़ें
-
कैसे करें
चाहे Android Studio में Gemini का इस्तेमाल किया जा रहा हो, Gemini CLI का, Antigravity का या Claude Code या Codex जैसे तीसरे पक्ष के एजेंट का, हमारा मकसद यह पक्का करना है कि हर जगह बेहतरीन क्वालिटी के Android ऐप्लिकेशन बनाए जा सकें.
Adarsh Fernando, Esteban de la Canal • 4 मिनट में पढ़ें
-
कैसे करें
हम आपको डिवाइस और क्लाउड, दोनों मॉडल का इस्तेमाल करके एआई की मदद से काम करने वाली सुविधाओं के उदाहरण देना चाहते थे. साथ ही, हम आपको अपने उपयोगकर्ताओं के लिए शानदार अनुभव बनाने के लिए प्रेरित करना चाहते थे.
Thomas Ezan, Ivy Knight • दो मिनट में पढ़ें
अप-टू-डेट रहें
Android डेवलपमेंट से जुड़ी नई अहम जानकारी, हर हफ़्ते अपने इनबॉक्स में पाएं.