स्टार्टअप प्रोफ़ाइल बनाएं

ज़रूरी शर्तों, बनाने के तरीके, और सबसे सही तरीकों के बारे में जानें. keywords_public: स्टार्टअप प्रोफ़ाइलें, बेसलाइन प्रोफ़ाइलें, ऐप्लिकेशन की परफ़ॉर्मेंस, APK ऑप्टिमाइज़ेशन, DEX लेआउट, Android Studio, Jetpack Macrobenchmark

स्टार्टअप प्रोफ़ाइलें, बेसलाइन प्रोफ़ाइलों का सबसेट होती हैं. स्टार्टअप प्रोफ़ाइल का इस्तेमाल, बिल्ड सिस्टम करता है. इससे, वह क्लास और तरीकों को और ऑप्टिमाइज़ कर पाता है. इसके लिए, वह आपके APK की DEX फ़ाइलों में कोड के लेआउट को बेहतर बनाता है. स्टार्टअप प्रोफ़ाइल की मदद से, ऐप्लिकेशन 15% से 30% तक ज़्यादा तेज़ी से शुरू होता है. हालांकि, यह सिर्फ़ बेसलाइन प्रोफ़ाइल की तुलना में होता है.

ज़्यादा जानकारी के लिए, स्टार्टअप प्रोफ़ाइल की खास जानकारी देखें.

ज़रूरी शर्तें

हमारा सुझाव है कि आप इन टूल के साथ स्टार्टअप प्रोफ़ाइलें इस्तेमाल करें:

  • Jetpack Macrobenchmark 1.2.0 या इसके बाद का वर्शन
  • Android Gradle प्लगिन (AGP) 8.2 या इसके बाद का वर्शन
  • Android Studio Iguana या इसके बाद का वर्शन

इसके अलावा, आपके ऐप्लिकेशन में ये सेटिंग होनी चाहिए:

  • R8 चालू है. अपनी रिलीज़ के लिए, isMinifyEnabled = true सेट करें.
  • DEX लेआउट ऑप्टिमाइज़ेशन की सुविधा चालू है. यह सुविधा सिर्फ़ AGP 8.1 और इसके बाद के वर्शन पर उपलब्ध है. साथ ही, AGP 8.3 और इसके बाद के वर्शन पर यह डिफ़ॉल्ट रूप से चालू रहती है. AGP के 8.1 से 8.2 वर्शन के लिए, ऐप्लिकेशन मॉड्यूल की बिल्ड फ़ाइल के baselineProfile {} ब्लॉक में, dexLayoutOptimization = true सेट करें.

स्टार्टअप प्रोफ़ाइल बनाना

Android Studio, डिफ़ॉल्ट बेसलाइन प्रोफ़ाइल जनरेटर टेंप्लेट का इस्तेमाल करने पर, बेसलाइन प्रोफ़ाइल के साथ-साथ स्टार्टअप प्रोफ़ाइल भी बनाता है.

स्टार्टअप प्रोफ़ाइल बनाने और जनरेट करने का तरीका, बेसलाइन प्रोफ़ाइल बनाने के तरीके जैसा ही होता है.

स्टार्टअप प्रोफ़ाइल बनाने का डिफ़ॉल्ट तरीका, Android Studio में मौजूद बेसलाइन प्रोफ़ाइल जनरेटर मॉड्यूल टेंप्लेट का इस्तेमाल करना है. इसमें स्टार्टअप इंटरैक्शन शामिल होते हैं, जिनसे बुनियादी स्टार्टअप प्रोफ़ाइल बनती है. इस स्टार्टअप प्रोफ़ाइल में ज़्यादा ज़रूरी यूज़र जर्नी (सीयूजे) जोड़ने के लिए, अपने ऐप्लिकेशन के स्टार्टअप सीयूजे को rule ब्लॉक में जोड़ें. साथ ही, includeInStartupProfile को true पर सेट करें. सामान्य ऐप्लिकेशन के लिए, ऐप्लिकेशन के MainActivity को लॉन्च करना काफ़ी हो सकता है. ज़्यादा जटिल ऐप्लिकेशन के लिए, अपने ऐप्लिकेशन में सबसे सामान्य एंट्री पॉइंट जोड़ें. जैसे, होम स्क्रीन से ऐप्लिकेशन शुरू करना या डीप लिंक में लॉन्च करना.

यहां दिए गए कोड स्निपेट में, बेसलाइन प्रोफ़ाइल जनरेटर (डिफ़ॉल्ट रूप से BaselineProfileGenerator.kt फ़ाइल) दिखाया गया है. इसमें होम स्क्रीन से ऐप्लिकेशन शुरू करने और डीप लिंक लॉन्च करने की सुविधा शामिल है. डीप लिंक, सीधे ऐप्लिकेशन के न्यूज़ फ़ीड पर जाता है, न कि ऐप्लिकेशन की होम स्क्रीन पर.

@RunWith(AndroidJUnit4::class)
@LargeTest
class BaselineProfileGenerator {

    @get:Rule
    val rule = BaselineProfileRule()

    @Test
    fun generate() {
        rule.collect(
            packageName = "com.example.app",
            includeInStartupProfile = true
        ) {
            uiAutomator {
                // Launch directly into the NEWS_FEED using startActivityIntent
                startIntent(Intent().apply {
                    setPackage(packageName)
                    setAction("com.example.app.NEWS_FEED")
                })
        }
    }
}

ऐप्लिकेशन के लिए बेसलाइन प्रोफ़ाइल जनरेट करें कॉन्फ़िगरेशन चलाएं. इसके बाद, स्टार्टअप प्रोफ़ाइल के नियमों को src/<variant>/generated/baselineProfiles/startup-prof.txt पर ढूंढें. यहां AGP, इन नियमों का इस्तेमाल अपने-आप करता है.

स्टार्टअप प्रोफ़ाइल बनाने के बारे में ध्यान देने वाली बातें

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

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

  1. मुख्य लॉन्चर गतिविधि
  2. ऐसी सूचनाएं जो ऐप्लिकेशन को चालू करती हैं
  3. लॉन्चर की वैकल्पिक गतिविधियां

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