स्टार्टअप प्रोफ़ाइल, बेसलाइन प्रोफ़ाइल का सबसेट हैं. स्टार्टअप प्रोफ़ाइल का इस्तेमाल ये कंपनियां करती हैं बिल्ड सिस्टम की मदद से, उन क्लास और तरीकों को और ज़्यादा ऑप्टिमाइज़ कर सके जो उनमें शामिल हैं हम आपके APK की DEX फ़ाइलों में कोड के लेआउट को बेहतर बनाते हैं. स्टार्टअप प्रोफ़ाइल से, सिर्फ़ बेसलाइन प्रोफ़ाइल की तुलना में, आपके ऐप्लिकेशन के शुरू होने की प्रोसेस 15% तक तेज़ है.
![](https://developer.android.google.cn/static/topic/performance/images/dex-layout-optimizations.png?authuser=9&hl=hi)
ज़रूरी शर्तें
हमारा सुझाव है कि आप नीचे दिए गए टूल की मदद से, स्टार्टअप प्रोफ़ाइल का इस्तेमाल करें:
- Jetpack मैक्रोबेंचमार्क 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
) {
// Launch directly into the NEWS_FEED.
startActivityAndWait(Intent().apply {
setPackage(packageName)
setAction("com.example.app.NEWS_FEED")
})
}
}
}
ऐप्लिकेशन के लिए बेसलाइन प्रोफ़ाइल जनरेट करें कॉन्फ़िगरेशन चलाएं और
Startup Profile के नियम:
src/<variant>/generated/baselineProfiles/startup-prof.txt
.
स्टार्टअप प्रोफ़ाइल ऑप्टिमाइज़ेशन की पुष्टि करें
DEX लेआउट ऑप्टिमाइज़ेशन की पुष्टि करने के लिए, Android Studio का इस्तेमाल करके APK खोलें और
DEX फ़ाइलों में क्लास की पुष्टि करें. पक्का करें कि मुख्य classes.dex
पूरी तरह भर गया. अगर आपके ऐप्लिकेशन में एक DEX फ़ाइल है, तो
स्टार्टअप प्रोफ़ाइल को चालू करने के बाद, ऐप्लिकेशन में दो DEX फ़ाइलें मौजूद हैं या नहीं.
अगर स्टार्टअप क्लास किसी एक DEX फ़ाइल में फ़िट नहीं होती हैं, तो Android Studio आपको चेतावनी देता है.
गड़बड़ी की जानकारी पाने के लिए, इसमें नॉन-स्टार्टअप तरीकों की संख्या शामिल है
तो पक्का करें कि R8 कंपाइलर को कम से कम वर्शन पर अपडेट किया गया हो
8.3.36-dev को settings.gradle
फ़ाइल में ये बदलाव करके
तो आपने स्टार्टअप प्रोफ़ाइल लागू की हो:
Kotlin
pluginManagement { buildscript { repositories { mavenCentral() maven { url = uri("https://storage.googleapis.com/r8-releases/raw") } } dependencies { classpath("com.android.tools:r8:8.3.6-dev") } } }
ग्रूवी
pluginManagement { buildscript { repositories { mavenCentral() maven { url uri('https://storage.googleapis.com/r8-releases/raw') } } dependencies { classpath 'com.android.tools:r8:8.3.6-dev" } } }
इसके बाद --info
जोड़ना न भूलें
Gradle के साथ बनाते समय, नीचे दिए गए निर्देश में assembleRelease
.
./gradlew assembleRelease --info
इसके बाद, गड़बड़ी की जानकारी को टर्मिनल पर प्रिंट कर दिया जाता है.
अगर आपका ऐप्लिकेशन या कोई लाइब्रेरी किसी पुराने एपीआई का रेफ़रंस देती है, तो इन क्लास की कंपैटबिलिटी को लागू करने का तरीका हमेशा आखिरी DEX फ़ाइल का इस्तेमाल करता है. रद्द की गई आखिरी DEX फ़ाइल, DEX लेआउट में शामिल नहीं है ऑप्टिमाइज़ेशन.
आपके लिए सुझाव
- ध्यान दें: JavaScript बंद होने पर लिंक टेक्स्ट दिखता है
- बेसलाइन प्रोफ़ाइलें बनाएं {:#create-profile-rules}
- बेसलाइन प्रोफ़ाइलें {:#baseline-profile}
- माइक्रोबेंचमार्क लिखना