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

स्टार्टअप प्रोफ़ाइलें, बेसलाइन प्रोफ़ाइलों का सबसेट होती हैं. बिल्ड सिस्टम, स्टार्टअप प्रोफ़ाइलों का इस्तेमाल करके, उनमें शामिल क्लास और तरीकों को और ऑप्टिमाइज़ करता है. इसके लिए, वह आपके 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 ट्रेस की जांच करें और लंबे समय तक चलने वाले ऑपरेशन ढूंढें. ऐप्लिकेशन के स्टार्टअप के दौरान, तरीकों के कॉल की पूरी और ऑटोमेट की जा सकने वाली जानकारी पाने के लिए, मेथड ट्रेसिंग की सुविधा चालू करके, मैक्रोबेंचमार्क का इस्तेमाल भी किया जा सकता है.