बेसलाइन प्रोफ़ाइल की खास जानकारी

बेसलिन प्रोफ़ाइलें, कोड को चलाने की स्पीड को करीब 30% तक बढ़ा देती हैं. ऐसा पहली बार लॉन्च करने के बाद होता है. ऐसा इसलिए होता है, क्योंकि ये प्रोफ़ाइलें, शामिल किए गए कोड पाथ के लिए इंटरप्रेटेशन और जस्ट-इन-टाइम (JIT) कंपाइलेशन के चरणों को छोड़ देती हैं.

किसी ऐप्लिकेशन या लाइब्रेरी में बेसलाइन प्रोफ़ाइल शामिल करके, Android रनटाइम (एआरटी), Ahead-of-Time (AOT) कंपाइलेशन की मदद से, तय किए गए कोड पाथ को ऑप्टिमाइज़ कर सकता है. इससे, हर नए उपयोगकर्ता और ऐप्लिकेशन के हर अपडेट के लिए, परफ़ॉर्मेंस को बेहतर बनाया जा सकता है. प्रोफ़ाइल गाइडेड ऑप्टिमाइज़ेशन (पीजीओ) की मदद से, ऐप्लिकेशन को स्टार्टअप को ऑप्टिमाइज़ करने, इंटरैक्शन जंक को कम करने, और पहली बार लॉन्च करने वाले उपयोगकर्ताओं के लिए, रनटाइम की परफ़ॉर्मेंस को बेहतर बनाने में मदद मिलती है.

परफ़ॉर्मेंस में हुए इन सुधारों से, कारोबार की मेट्रिक में सीधे तौर पर सुधार होता है. जैसे, उपयोगकर्ताओं को अपने साथ जोड़े रखना, लेन-देन, और रेटिंग. Josh, Lyft, TikTok, और Zomato की कहानियों में, कारोबार की मेट्रिक पर परफ़ॉर्मेंस के असर के बारे में ज़्यादा जानें.

बेसलाइन प्रोफ़ाइल के फ़ायदे

बेसलाइन प्रोफ़ाइल की मदद से, ऐप्लिकेशन के स्टार्टअप, स्क्रीन के बीच नेविगेट करने या कॉन्टेंट को स्क्रोल करने जैसे सभी उपयोगकर्ता इंटरैक्शन को पहली बार चलाने पर ज़्यादा आसानी से किया जा सकता है. ऐप्लिकेशन की स्पीड और रिस्पॉन्स देने की क्षमता को बढ़ाकर, बेसलाइन प्रोफ़ाइलें रोज़ के सक्रिय उपयोगकर्ताओं की संख्या बढ़ा सकती हैं. साथ ही, इससे ऐप्लिकेशन पर वापस आने वाले लोगों की औसत संख्या भी बढ़ सकती है.

बेसलाइन प्रोफ़ाइलें, ऐप्लिकेशन के स्टार्टअप के बाद ऑप्टिमाइज़ेशन में मदद करती हैं. इसके लिए, वे उपयोगकर्ता के सामान्य इंटरैक्शन उपलब्ध कराती हैं. इससे ऐप्लिकेशन के पहले लॉन्च से ही, ऐप्लिकेशन के रनटाइम को बेहतर बनाया जा सकता है. गाइडेड एओटी कंपाइलेशन, उपयोगकर्ता के डिवाइसों पर निर्भर नहीं करता. इसे मोबाइल डिवाइस के बजाय, डेवलपमेंट मशीन पर हर रिलीज़ के लिए एक बार किया जा सकता है. बेसलिन प्रोफ़ाइल के साथ रिलीज़ शिप करने से, ऐप्लिकेशन ऑप्टिमाइज़ेशन, सिर्फ़ क्लाउड प्रोफ़ाइल पर भरोसा करने की तुलना में बहुत तेज़ी से उपलब्ध हो जाते हैं.

बेसलिन प्रोफ़ाइल का इस्तेमाल न करने पर, ऐप्लिकेशन के सभी कोड को इंटरप्रेट करने के बाद, मेमोरी में JIT-कंपाइल किया जाता है. इसके अलावा, जब डिवाइस का इस्तेमाल नहीं किया जा रहा होता है, तब इसे बैकग्राउंड में odex फ़ाइल में लिखा जाता है. किसी ऐप्लिकेशन को इंस्टॉल या अपडेट करने के बाद, उपयोगकर्ताओं को पहली बार ऐप्लिकेशन चलाने पर खराब अनुभव मिलता है. ऐसा तब तक होता है, जब तक नए कोड पाथ ऑप्टिमाइज़ नहीं हो जाते. ऑप्टिमाइज़ करने के बाद, कई ऐप्लिकेशन की परफ़ॉर्मेंस में करीब 30% की बढ़ोतरी होती है.

स्टार्टअप प्रोफ़ाइलें

स्टार्टअप प्रोफ़ाइलें, बेसलाइन प्रोफ़ाइलों की तरह ही होती हैं. हालांकि, इनमें अंतर यह है कि इनका इस्तेमाल डिवाइस पर ऑप्टिमाइज़ेशन के बजाय, कंपाइल टाइम पर किया जाता है. स्टार्टअप प्रोफ़ाइल का इस्तेमाल, DEX फ़ाइल के लेआउट को ऑप्टिमाइज़ करने के लिए किया जाता है, ताकि स्टार्टअप के समय को बेहतर बनाया जा सके. स्टार्टअप प्रोफ़ाइल में पहचाने गए कोड को मुख्य classes.dex फ़ाइल में रखा जाता है. साथ ही, अन्य कोड को अलग-अलग DEX फ़ाइलों में रखा जाता है. इससे ऐप्लिकेशन के खुलने में लगने वाला समय कम हो जाता है. ऐसा इसलिए होता है, क्योंकि ऐप्लिकेशन के खुलने के दौरान पेज फ़ॉल्ट की संख्या कम हो जाती है. स्टार्टअप प्रोफ़ाइल और DEX लेआउट ऑप्टिमाइज़ेशन से, ऐप्लिकेशन के स्टार्टअप समय को कैसे बेहतर बनाया जा सकता है, इस बारे में ज़्यादा जानने के लिए, DEX लेआउट ऑप्टिमाइज़ेशन और स्टार्टअप प्रोफ़ाइल लेख पढ़ें.

शुरू करें

अपने मौजूदा ऐप्लिकेशन की परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के लिए, बेसलाइन प्रोफ़ाइलें बनाएं लेख पढ़ें.

प्रोफ़ाइल जनरेट करना बनाम रिलीज़ के लिए तैयार बिल्ड

यह समझना ज़रूरी है कि बेसलाइन और स्टार्टअप प्रोफ़ाइल फ़ाइलें जनरेट करते समय (उदाहरण के लिए, baseline-prof.txt और startup-prof.txt) और इन प्रोफ़ाइलों का इस्तेमाल करने वाला फ़ाइनल रिलीज़ APK बनाते समय, ज़रूरी बिल्ड कॉन्फ़िगरेशन में क्या अंतर होता है.

प्रोफ़ाइल फ़ाइलें जनरेट करते समय (उदाहरण के लिए, benchmark):

यह पक्का करने के लिए कि जनरेट किए गए प्रोफ़ाइल के नियम, आपके कोड के तरीके के सिग्नेचर से सटीक तरीके से मेल खाते हों, आपको प्रोफ़ाइल जनरेट करने के लिए इस्तेमाल किए गए बिल्ड वैरिएंट के लिए, अस्पष्टता और ऑप्टिमाइज़ेशन (R8) को बंद करना होगा. यह वैरिएंट, आपके रिलीज़ बिल्ड वैरिएंट से अलग होना चाहिए. रिलीज़ बिल्ड वैरिएंट में, कोड को उलझाना और ऑप्टिमाइज़ेशन की सुविधा चालू होती है. इसके लिए, आपको प्रोफ़ाइल जनरेशन के लिए isMinifyEnabled = false सेट करना होगा. अगर Baseline Profile Gradle प्लगिन का इस्तेमाल नहीं किया जा रहा है, तो आपको यह भी पक्का करना होगा कि -dontobfuscate और -dontoptimize लागू हों. बेसलान प्रोफ़ाइल Gradle प्लगिन इस कॉन्फ़िगरेशन को आपके लिए अपने-आप मैनेज करता है.

फ़ाइनल रिलीज़ APK बनाते समय:

रिलीज़ के लिए तैयार बिल्ड में हमेशा isMinifyEnabled = true होना चाहिए, ताकि ओब्फ़स्केशन, काट-छांट, और ऑप्टिमाइज़ेशन का फ़ायदा मिल सके. R8, आपकी अनऑब्फ़स्केटेड प्रोफ़ाइल फ़ाइलों के नियमों को अपने-आप फिर से लिखता है, ताकि वे आपकी रिलीज़ APK में मौजूद, ऑब्फ़स्केट किए गए और ऑप्टिमाइज़ किए गए कोड से मेल खाएं. DEX लेआउट ऑप्टिमाइज़ेशन (स्टार्टअप प्रोफ़ाइल की मदद से) को असरदार बनाने के लिए, आपके रिलीज़ ऐप्लिकेशन को अस्पष्ट किया जाना चाहिए. साथ ही, इसमें R8 का इस्तेमाल किया जाना चाहिए. साथ ही, सभी ऑप्टिमाइज़ेशन चालू होने चाहिए.

डिपेंडेंसी चेन, स्टेबल और डेवलपमेंट रिलीज़ वर्शन उपलब्ध कराती है. बेसलाइन प्रोफ़ाइल जनरेट और इंस्टॉल करने के लिए, Android Gradle प्लगिन, Macrobenchmark लाइब्रेरी, और Profile Installer के इन वर्शन या इसके बाद के वर्शन का इस्तेमाल करें. इन डिपेंडेंसी की ज़रूरत अलग-अलग समय पर होती है. ये सभी, टूलचेन के तौर पर एक साथ काम करती हैं, ताकि ऑप्टिमल बेसलाइन प्रोफ़ाइल को चालू किया जा सके.

  • Android Gradle प्लग इन: com.android.tools.build:8.0.0
  • मैक्रोबेंचमार्क लाइब्रेरी: androidx.benchmark:benchmark-macro-junit4:1.4.1
  • प्रोफ़ाइल इंस्टॉलर: androidx.profileinstaller:profileinstaller:1.4.1

हमारा सुझाव है कि बेसलाइन प्रोफ़ाइलें बनाने और मैनेज करने के लिए, AGP के नए वर्शन का इस्तेमाल करें. यहां AGP के अलग-अलग वर्शन में मिलने वाली मुख्य सुविधाएं दी गई हैं:

AGP का वर्शन सुविधाएं
8.4 Gradle रैपर कमांड लाइन टूल या Android Studio का इस्तेमाल करके, डीबग नहीं की जा सकने वाली बिल्ड के ऐप्लिकेशन स्थानीय तौर पर इंस्टॉल किए जाते हैं. इसलिए, आपकी स्थानीय रिलीज़ बिल्ड की परफ़ॉर्मेंस, प्रोडक्शन बिल्ड की परफ़ॉर्मेंस से ज़्यादा मिलती-जुलती है. इस अपडेट से, बेसलाइन प्रोफ़ाइलों की प्रोडक्शन परफ़ॉर्मेंस पर कोई असर नहीं पड़ता.
8.3
  • सोर्स सेट डायरेक्ट्री के लिए पूरी तरह से काम करता है (लाइब्रेरी मॉड्यूल): एक से ज़्यादा बेसलाइन प्रोफ़ाइल सोर्स फ़ाइलें डिक्लेयर करें. साथ ही, src/free/generated/baselineProfiles/baseline-prof1.txt जैसे वैरिएंट के हिसाब से डायरेक्ट्री का इस्तेमाल करें. ये डायरेक्ट्री, अब लाइब्रेरी मॉड्यूल के साथ-साथ ऐप्लिकेशन मॉड्यूल के लिए भी उपलब्ध हैं.
  • बेसलाइन प्रोफ़ाइल में desugared क्लास शामिल होती हैं.
8.2
  • R8 की मदद से नियमों को फिर से लिखना: D8 और R8, इंसानों के पढ़ने लायक बेसलाइन और स्टार्टअप प्रोफ़ाइल के नियमों को बदल सकते हैं. इससे, ऐप्लिकेशन की परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के लिए ज़रूरी सभी नियमों को पूरी तरह से कैप्चर किया जा सकता है. इसकी मदद से, बिना काट-छांट किए गए बिल्ड से प्रोफ़ाइलें जनरेट की जा सकती हैं. साथ ही, उन्हें काट-छांट किए गए रिलीज़ बिल्ड पर लागू किया जा सकता है. यह ~30% तक, तरीकों के लिए बेसलाइन प्रोफ़ाइल कवरेज को बढ़ाता है. साथ ही, ऐप्लिकेशन की परफ़ॉर्मेंस को ~15% तक बढ़ाता है.
  • स्टार्टअप प्रोफ़ाइलें: इस नई तरह की बेसलाइन प्रोफ़ाइल को जनरेट करती हैं, ताकि DEX में कोड के लेआउट के बारे में जानकारी दी जा सके. इससे स्टार्टअप की परफ़ॉर्मेंस में ~15% की बढ़ोतरी होती है. बड़े ऐप्लिकेशन के लिए, यह बढ़ोतरी इससे भी ज़्यादा हो सकती है.
8.0 कम से कम सुझाया गया वर्शन: एक ही Gradle टास्क की मदद से बेसलाइन प्रोफ़ाइलें जनरेट करने के लिए, Baseline Profile Gradle प्लगिन का इस्तेमाल करें.
  • पूरे सोर्स सेट डायरेक्ट्री के साथ काम करता है (ऐप्लिकेशन मॉड्यूल): एक से ज़्यादा बेसलाइन प्रोफ़ाइल सोर्स फ़ाइलें डिक्लेयर करें. साथ ही, वैरिएंट के हिसाब से डायरेक्ट्री का इस्तेमाल करें. जैसे, src/free/generated/baselineProfiles/baseline-prof1.txt.
7.4 कम से कम ज़रूरी वर्शन: ऐप्लिकेशन, लाइब्रेरी से बेसलाइन प्रोफ़ाइलें इस्तेमाल कर सकते हैं. साथ ही, src/main/baseline-prof.txt फ़ाइल में अपनी बेसलाइन प्रोफ़ाइल दे सकते हैं.
  • ऐप्लिकेशन बंडल से APK बनाते समय, बेसलाइन प्रोफ़ाइलें सही तरीके से पैकेज की जाती हैं (समस्या #230361284).
  • जिन ऐप्लिकेशन में एक से ज़्यादा .dex फ़ाइलें होती हैं उनके लिए, बेसलाइन प्रोफ़ाइलें प्राइमरी .dex फ़ाइल के लिए सही तरीके से पैकेज की जाती हैं.
  • D8 और R8 की मदद से, ऐसी बिल्ड से स्टार्टअप प्रोफ़ाइलें जनरेट की जा सकती हैं जहां isMinifyEnabled को false पर सेट किया गया हो.

प्रोफ़ाइल जनरेट करने का उदाहरण

यहां ऐप्लिकेशन स्टार्टअप के लिए बेसलाइन प्रोफ़ाइल बनाने वाली क्लास का उदाहरण दिया गया है. इसमें सुझाए गए Macrobenchmark लाइब्रेरी का इस्तेमाल करके, नेविगेशन और स्क्रोल करने से जुड़े कई इवेंट भी शामिल हैं:

class BaselineProfileGenerator {
    @get:Rule
    val baselineProfileRule = BaselineProfileRule()

    @Test
    fun appStartupAndUserJourneys() {
        baselineProfileRule.collect(packageName = PACKAGE_NAME) {
            uiAutomator {
                // App startup journey.
                startApp(PACKAGE_NAME)

                // Find and click elements using the new DSL
                onElement { textAsString() == "COMPOSE LAZYLIST" }.click()
                onElement { viewIdResourceName == "myLazyColumn" }.also {
                    it.fling(Direction.DOWN)
                    it.fling(Direction.UP)
                }
                pressBack()
            }
        }
    }
}

उपयोगकर्ता के सफ़र को अपने-आप पूरा करने के लिए, UI Automator लाइब्रेरी का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, UI Automator की मदद से अपने-आप होने वाली जांच लिखना लेख पढ़ें.

इस कोड को पूरे कॉन्टेक्स्ट और ज़्यादा जानकारी के साथ, GitHub पर परफ़ॉर्मेंस के सैंपल में देखा जा सकता है.

अपील वाले वीडियो में क्या शामिल करना है

किसी ऐप्लिकेशन में बेसलाइन प्रोफ़ाइल का इस्तेमाल करते समय, ऐप्लिकेशन के स्टार्टअप कोड को शामिल किया जा सकता है. साथ ही, उपयोगकर्ता के सामान्य इंटरैक्शन को भी शामिल किया जा सकता है. जैसे, स्क्रीन के बीच नेविगेट करना या स्क्रोल करना. रजिस्ट्रेशन, लॉगिन या पेमेंट जैसे पूरे फ़्लो भी इकट्ठा किए जा सकते हैं. आपको लगता है कि कोई उपयोगकर्ता जर्नी बहुत ज़रूरी है, तो उसकी रनटाइम परफ़ॉर्मेंस को बेहतर बनाने के लिए, बेसलाइन प्रोफ़ाइल का इस्तेमाल किया जा सकता है.

अगर आपको परफ़ॉर्मेंस को बेहतर बनाने के लिए अलग-अलग तरीकों से एक्सपेरिमेंट करना है, तो अपने एक्सपेरिमेंट के दोनों ग्रुप के लिए बेसलाइन प्रोफ़ाइलें शामिल करें. ऐसा करने से, आपको अपने नतीजों को आसानी से समझने में मदद मिल सकती है. साथ ही, यह पक्का किया जा सकता है कि आपके सभी उपयोगकर्ता, कंपाइल किया गया कोड लगातार चला रहे हों.

लाइब्रेरी, अपनी खुद की बेसलाइन प्रोफ़ाइलें उपलब्ध करा सकती हैं. साथ ही, ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाने के लिए, उन्हें रिलीज़ के साथ भेज सकती हैं. उदाहरण के लिए, Jetpack Compose की परफ़ॉर्मेंस में बेसलाइन प्रोफ़ाइल का इस्तेमाल करें सेक्शन देखें.

बेसलाइन प्रोफ़ाइलें कैसे काम करती हैं

अपने ऐप्लिकेशन या लाइब्रेरी को डेवलप करते समय, बेसलाइन प्रोफ़ाइलें तय करें. इससे, उपयोगकर्ता के सामान्य इंटरैक्शन को कवर किया जा सकेगा. इन इंटरैक्शन में, रेंडरिंग का समय या लेटेन्सी अहम होती है. ये इस तरह काम करती हैं:

  1. आपके ऐप्लिकेशन के लिए, आसानी से समझ में आने वाले प्रोफ़ाइल के नियम जनरेट किए जाते हैं. साथ ही, उन्हें ऐप्लिकेशन में बाइनरी फ़ॉर्म में कंपाइल किया जाता है. इन्हें assets/dexopt/baseline.prof में देखा जा सकता है. इसके बाद, Google Play पर एएबी को पहले की तरह अपलोड किया जा सकता है.

  2. Google Play, प्रोफ़ाइल को प्रोसेस करता है और उसे सीधे उपयोगकर्ताओं को APK के साथ भेजता है. इंस्टॉलेशन के दौरान, ART प्रोफ़ाइल में मौजूद तरीकों का एओटी कंपाइलेशन करता है. इससे उन तरीकों को तेज़ी से लागू किया जा सकता है. अगर प्रोफ़ाइल में ऐप्लिकेशन लॉन्च करने या फ़्रेम रेंडर करने के दौरान इस्तेमाल किए गए तरीके शामिल हैं, तो उपयोगकर्ता को ऐप्लिकेशन के लॉन्च होने में कम समय लग सकता है और जंक कम हो सकता है.

  3. यह फ़्लो, क्लाउड प्रोफ़ाइल के एग्रीगेशन के साथ काम करता है, ताकि समय के साथ ऐप्लिकेशन के असल इस्तेमाल के आधार पर परफ़ॉर्मेंस को बेहतर बनाया जा सके.

पहली इमेज. इस डायग्राम में, अपलोड करने से लेकर असली उपयोगकर्ता तक डिलीवरी करने तक, बेसलाइन प्रोफ़ाइल के वर्कफ़्लो को दिखाया गया है. साथ ही, यह भी दिखाया गया है कि यह वर्कफ़्लो, क्लाउड प्रोफ़ाइल से कैसे जुड़ा है.

क्लाउड प्रोफ़ाइलें

क्लाउड प्रोफ़ाइलें, PGO का एक अतिरिक्त फ़ॉर्म उपलब्ध कराती हैं. इन्हें Google Play Store इकट्ठा करता है और इंस्टॉल करने के समय कंपाइल करने के लिए डिस्ट्रिब्यूट करता है. ये, बेसलाइन प्रोफ़ाइलों के साथ काम करती हैं.

क्लाउड प्रोफ़ाइलें, ऐप्लिकेशन के साथ उपयोगकर्ताओं के असल इंटरैक्शन के आधार पर बनाई जाती हैं. हालांकि, अपडेट के बाद इन्हें डिस्ट्रिब्यूट होने में कई घंटे या दिन लग जाते हैं. इससे इनकी उपलब्धता सीमित हो जाती है. प्रोफ़ाइलें पूरी तरह से डिस्ट्रिब्यूट होने तक, नए या अपडेट किए गए ऐप्लिकेशन का इस्तेमाल करने वाले लोगों के लिए, ऐप्लिकेशन की परफ़ॉर्मेंस अच्छी नहीं होती. इसके अलावा, Cloud Profiles सिर्फ़ Android 9 (एपीआई लेवल 28) या इसके बाद के वर्शन वाले Android डिवाइसों पर काम करती हैं. साथ ही, यह सिर्फ़ उन ऐप्लिकेशन के लिए बेहतर तरीके से काम करती हैं जिनके पास उपयोगकर्ताओं का बड़ा आधार है.

Android के अलग-अलग वर्शन पर कंपाइल करने का तरीका

Android प्लैटफ़ॉर्म के वर्शन, ऐप्लिकेशन कंपाइल करने के अलग-अलग तरीके इस्तेमाल करते हैं. हर तरीके में, परफ़ॉर्मेंस से जुड़ा समझौता होता है. बेसलाइन प्रोफ़ाइलें, कंपाइल करने के पिछले तरीकों से बेहतर होती हैं. ऐसा इसलिए, क्योंकि ये सभी इंस्टॉल के लिए एक प्रोफ़ाइल उपलब्ध कराती हैं.

Android वर्शन कंपाइलेशन का तरीका ऑप्टिमाइज़ेशन का तरीका
5 से 6 (एपीआई लेवल 21 से 23 तक) फ़ुल एओटी पूरे ऐप्लिकेशन को इंस्टॉल करने के दौरान ऑप्टिमाइज़ किया जाता है. इस वजह से, ऐप्लिकेशन का इस्तेमाल करने के लिए ज़्यादा इंतज़ार करना पड़ता है. साथ ही, रैम और डिस्क स्पेस का इस्तेमाल बढ़ जाता है. इसके अलावा, डिस्क से कोड लोड होने में ज़्यादा समय लगता है. इससे कोल्ड स्टार्टअप में लगने वाला समय बढ़ सकता है.
7 से लेकर 8.1 (एपीआई लेवल 24 से 27) पार्शियल एओटी (बेसलाइन प्रोफ़ाइल) बेसलिन प्रोफ़ाइलें, androidx.profileinstaller इंस्टॉल करता है. ऐसा तब होता है, जब ऐप्लिकेशन मॉड्यूल पहली बार चलता है और यह डिपेंडेंसी तय करता है. ART, ऐप्लिकेशन के इस्तेमाल के दौरान अतिरिक्त प्रोफ़ाइल के नियम जोड़कर, इसे और बेहतर बना सकता है. साथ ही, डिवाइस के इस्तेमाल में न होने पर उन्हें कंपाइल कर सकता है. इससे डिस्क स्पेस और डिस्क से कोड लोड करने में लगने वाले समय को ऑप्टिमाइज़ किया जाता है. इससे ऐप्लिकेशन के लिए इंतज़ार का समय कम हो जाता है.
9 (एपीआई लेवल 28) और इससे ऊपर के वर्शन आंशिक एओटी (बेसलाइन + क्लाउड प्रोफ़ाइल) Play, ऐप्लिकेशन इंस्टॉल करने के दौरान बेसलाइन प्रोफ़ाइलों का इस्तेमाल करता है. इससे, APK और क्लाउड प्रोफ़ाइलों को ऑप्टिमाइज़ किया जा सकता है. हालांकि, ऐसा सिर्फ़ तब किया जा सकता है, जब ये प्रोफ़ाइलें उपलब्ध हों. इंस्टॉल करने के बाद, ART प्रोफ़ाइलें Play पर अपलोड की जाती हैं. इसके बाद, उन्हें इकट्ठा किया जाता है. इसके बाद, जब अन्य उपयोगकर्ता ऐप्लिकेशन इंस्टॉल या अपडेट करते हैं, तो उन्हें क्लाउड प्रोफ़ाइलें के तौर पर उपलब्ध कराया जाता है.

पहले से मालूम समस्याएं

यहां कुछ समस्याएं और उनके समाधान दिए गए हैं. इसके अलावा, कुछ ऐसी समस्याएं भी दी गई हैं जिनके समाधान पर काम चल रहा है:

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

  • Firebase टेस्ट लैब के डिवाइसों पर, बेसलाइन प्रोफ़ाइल जनरेट करने की सुविधा काम नहीं करती. इनमें Gradle की मदद से मैनेज किए जाने वाले टेस्ट लैब डिवाइस भी शामिल हैं (समस्या #285187547).

  • लाइब्रेरी के लिए बेसलाइन प्रोफ़ाइलें उपलब्ध कराने के लिए, कम से कम Gradle प्लगिन 1.2.3 या AGP 8.3 का इस्तेमाल करें (समस्या #313992099).

  • अगर आपने ./gradlew app:generateBaselineProfile कमांड का इस्तेमाल करके बेसलाइन प्रोफ़ाइलें जनरेट की हैं, तो टेस्ट मॉड्यूल में मौजूद बेंचमार्क भी चलेंगे. हालांकि, इनके नतीजों को खारिज कर दिया जाएगा. अगर ऐसा होता है, तो -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile के साथ कमांड चलाकर, सिर्फ़ बेसलाइन प्रोफ़ाइलें जनरेट की जा सकती हैं. इस समस्या को AGP 8.2 में ठीक कर दिया गया है.

  • सभी बिल्ड टाइप के लिए बेसलाइन प्रोफ़ाइलें जनरेट करने का निर्देश— ./gradlew app:generateBaselineProfile—सिर्फ़ रिलीज़ बिल्ड टाइप के लिए बेसलाइन प्रोफ़ाइलें जनरेट करता है. इस समस्या को AGP 8.1 में ठीक कर दिया गया है.

  • Google Play Store के अलावा, ऐप्लिकेशन डिस्ट्रिब्यूट करने वाले अन्य चैनलों पर, इंस्टॉल करते समय बेसलाइन प्रोफ़ाइल इस्तेमाल करने की सुविधा उपलब्ध नहीं हो सकती. इन चैनलों के ज़रिए इंस्टॉल किए गए ऐप्लिकेशन के उपयोगकर्ताओं को, बैकग्राउंड dexopt के चलने तक फ़ायदे नहीं दिखते. इसमें आम तौर पर पूरी रात लग जाती है.

  • Play Store में संगठन के लोगों के साथ ऐप्लिकेशन शेयर करने की सुविधा, बेसलाइन प्रोफ़ाइलों के साथ काम नहीं करती. हालांकि, इंटरनल टेस्टिंग ट्रैक के साथ काम करती है.

  • Huawei जैसे कुछ डिवाइसों पर बैटरी ऑप्टिमाइज़ेशन की सुविधा चालू होने पर, प्रोफ़ाइल इंस्टॉल करने में समस्या आ सकती है. यह पक्का करने के लिए कि आपकी प्रोफ़ाइलें सही तरीके से इंस्टॉल हों, बेंचमार्क डिवाइसों में बैटरी ऑप्टिमाइज़ेशन की सुविधा बंद करें.

अन्य संसाधन