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

स्टार्टअप प्रोफ़ाइलें, बेसलाइन प्रोफ़ाइलों का सबसेट होती हैं. स्टार्टअप प्रोफ़ाइलों का इस्तेमाल, बिल्ड सिस्टम करता है. इससे, 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 में मौजूद बेसलाइन प्रोफ़ाइल जनरेटर मॉड्यूल टेंप्लेट का इस्तेमाल करना है. इसमें स्टार्टअप के इंटरैक्शन शामिल होते हैं, जिनसे स्टार्टअप की बुनियादी प्रोफ़ाइल बनती है. इस स्टार्टअप प्रोफ़ाइल को ज़्यादा क्रिटिकल यूज़र जर्नी (CUJs) के साथ बेहतर बनाने के लिए, अपने ऐप्लिकेशन के स्टार्टअप CUJs को 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
        ) {
            // Launch directly into the NEWS_FEED.
            startActivityAndWait(Intent().apply {
                setPackage(packageName)
                setAction("com.example.app.NEWS_FEED")
            })
        }
    }
}

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

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

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

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

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

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