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

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

पहली इमेज. DEX लेआउट ऑप्टिमाइज़ेशन की वजह से, कोड लोकैलिटी में सुधार हुआ है.

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

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

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

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

  • R8 चालू है. अपनी रिलीज़ के लिए, isMinifyEnabled = true सेट करें.
  • DEX लेआउट ऑप्टिमाइज़ेशन की सुविधा चालू है. ऐप्लिकेशन मॉड्यूल की बिल्ड फ़ाइल के 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 पर स्टार्टअप प्रोफ़ाइल के नियम ढूंढें.

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

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

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

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

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