packageScope के साथ R8 का इस्तेमाल करके, कुछ खास पैकेज ऑप्टिमाइज़ किए जा सकते हैं. यह उन ऐप्लिकेशन के लिए पहला चरण है जो अब तक R8 का इस्तेमाल नहीं करते हैं. हालांकि, यह ज़रूरी नहीं है. साथ ही, यह उन ऐप्लिकेशन के लिए सुझाव नहीं दिया जाता है जो पहले से ही R8 का इस्तेमाल करते हैं.
यह तय करें कि packageScope का इस्तेमाल करना है या नहीं
अगर आपका ऐप्लिकेशन पहले से ही R8 का इस्तेमाल करता है, तो packageScope का इस्तेमाल न करें. ऐसा इसलिए, क्योंकि परफ़ॉर्मेंस और ऐप्लिकेशन के साइज़ के हिसाब से यह सबसे सही कॉन्फ़िगरेशन नहीं है. इसके बजाय, बेहतर कीप नियमों का इस्तेमाल करके, अपने ऐप्लिकेशन के R8 कॉन्फ़िगरेशन को बेहतर बनाएं. अगर कंपैटिबिलिटी मोड का इस्तेमाल किया जा रहा है, तो R8 के फ़ुल मोड पर माइग्रेट करें.
ऐसे ऐप्लिकेशन के लिए जो अब तक R8 का इस्तेमाल नहीं करते हैं, लेकिन R8 को अपना रहे हैं, packageScope का इस्तेमाल करके ट्रांज़िशन को धीरे-धीरे मैनेज करें. R8, ऐप्लिकेशन को बेहतर बनाने के लिए कई तरह के ऑप्टिमाइज़ेशन लागू करता है. इससे ऐप्लिकेशन के व्यवहार में बदलाव हो सकता है. इसलिए, इन ऑप्टिमाइज़ेशन को कुछ ऐसे पैकेज तक सीमित करें जिन्हें ऑप्टिमाइज़ करना सुरक्षित है. जैसे, AndroidX और Kotlin. इससे आपको कम जोखिम के साथ परफ़ॉर्मेंस में सुधार करने में मदद मिलती है. जब आपका ऐप्लिकेशन स्थिर हो जाए, तब इन ऑप्टिमाइज़ेशन को धीरे-धीरे अपने बाकी कोडबेस और डिपेंडेंसी तक बढ़ाया जा सकता है. साथ ही, हर चरण में स्थिरता की जांच की जा सकती है.
ज़रूरी शर्तें
packageScope के साथ R8 का इस्तेमाल करने के लिए, Android Gradle प्लग इन 9.0 या इसके बाद का वर्शन ज़रूरी है.
ऑप्टिमाइज़ेशन को कॉन्फ़िगर करना
packageScope की मदद से ऑप्टिमाइज़ेशन की सुविधा चालू करने के लिए, यह तरीका अपनाएं.
ऑप्टिमाइज़ करने के लिए लाइब्रेरी चुनें
ऑप्टिमाइज़ करने के लिए लाइब्रेरी की पहचान करें. हमारा सुझाव है कि आप AndroidX और Kotlin लाइब्रेरी androidx.**, kotlin.**, और kotlinx.** से शुरुआत करें. ऐसा इसलिए, क्योंकि ये स्टेबल लाइब्रेरी हैं और इन्हें R8 के साथ काम करने के लिए कॉन्फ़िगर किया गया है.
packageScope के साथ R8 का इस्तेमाल करने की सुविधा चालू करें
अपने प्रोजेक्ट की gradle.properties फ़ाइल में यह कोड जोड़ें:
android.r8.gradual.support=true
ऑप्टिमाइज़ेशन ब्लॉक सेट अप करना
अपने मॉड्यूल-लेवल की build.gradle.kts (या build.gradle) फ़ाइल में, रिलीज़ बिल्ड कॉन्फ़िगरेशन में optimization ब्लॉक जोड़ें. इस ब्लॉक में, packageScope का इस्तेमाल करके उन खास पैकेज की सूची बनाएं जिन्हें आपको ऑप्टिमाइज़ करना है. अपनी build.gradle.kts फ़ाइल में, पैकेज की सूची को setOf() में रैप करें.
Kotlin
android { buildTypes { release { proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"),"proguard-rules.pro") optimization { enable = true packageScope = setOf("androidx.**","kotlin.**", "kotlinx.**") } } } }
Groovy
android { buildTypes { release { proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' optimization { enable = true packageScope = ["androidx.**", "kotlin.**", "kotlinx.**"] } } } }
ऑप्टिमाइज़ेशन की जांच करना
packageScope का एलान करने या उसे अपडेट करने के बाद, अपने ऐप्लिकेशन की अच्छी तरह से जांच करें. इससे यह पुष्टि की जा सकेगी कि ऐप्लिकेशन में कोई अनचाही गड़बड़ी या व्यवहार में बदलाव नहीं हुआ है.
चुनिंदा पैकेज को ऑप्टिमाइज़ करने से लेकर पूरे ऐप्लिकेशन को ऑप्टिमाइज़ करने तक का ट्रांज़िशन
ऑप्टिमाइज़ेशन के फ़ायदों को ज़्यादा से ज़्यादा पाने के लिए, आपको अपने पूरे ऐप्लिकेशन में packageScope से R8 पर धीरे-धीरे स्विच करना चाहिए. इस प्रोसेस में, ऑप्टिमाइज़ेशन कवरेज को धीरे-धीरे बढ़ाना शामिल है:
- स्टेबल लाइब्रेरी का इस्तेमाल शुरू करें. सबसे पहले,
packageScopeसूची में सिर्फ़ ऐसी लाइब्रेरी शामिल करें जिनका इस्तेमाल बड़े पैमाने पर किया जाता है और जो स्थिर हैं. साथ ही, वे R8 के ऑप्टिमाइज़ेशन के साथ काम करती हैं. AndroidX और Kotlin लाइब्रेरीandroidx.**,kotlin.**, औरkotlinx.**से शुरू करें. - धीरे-धीरे पैकेज जोड़ें.
packageScopeमें नए पैकेज प्रीफ़िक्स धीरे-धीरे जोड़ें:- डिपेंडेंसी का आकलन करें. अपने ऐप्लिकेशन की लाइब्रेरी की समीक्षा करें.
packageScopeसूची में जोड़ने के लिए, Google की आधिकारिक लाइब्रेरी (उदाहरण के लिए,com.google.**) औरOkHttpजैसी अन्य मज़बूत लाइब्रेरी (उदाहरण के लिए,okhttp3.**औरokio.**) सबसे सही विकल्प हैं. उन लाइब्रेरी को प्राथमिकता दें जिनमें हैवी रिफ़्लेक्शन, सीरियलाइज़ेशन या नेटिव कोड कॉल (जेएनआई) शामिल नहीं हैं. - पैकेज के साइज़ के हिसाब से प्राथमिकता दें. Android Studio के APK
ऐनलिसिस टूल का इस्तेमाल करके, यह पता लगाएं कि आपके ऐप्लिकेशन का साइज़ किन वजहों से बढ़ा है.
1. R8 को बंद करके, रिलीज़ करने के लिए एएबी या APK बनाएं.
1. इसे Analyzer में खोलें और
dexफ़ाइलों की जांच करें. 1. पैकेज को साइज़ के हिसाब से क्रम से लगाएं. सबसे बड़े पैकेज से, ऑप्टिमाइज़ेशन के लिए सबसे ज़्यादा लागत पर रिटर्न (आरओआई) मिलता है. इन लाइब्रेरी को टारगेट करने से, आपको प्रोसेस की शुरुआत में ही सबसे ज़्यादा फ़ाइल साइज़ कम करने में मदद मिलती है. हालांकि, ऐसा तब ही होगा, जब इन लाइब्रेरी में फ़ाइलों को सुरक्षित रखने के लिए बहुत ज़्यादा नियम न हों. ज़्यादा जानकारी के लिए, लाइब्रेरी सोच-समझकर चुनें लेख पढ़ें.
- डिपेंडेंसी का आकलन करें. अपने ऐप्लिकेशन की लाइब्रेरी की समीक्षा करें.
- व्यवहार में हुए बदलावों की पुष्टि करें. हर नए पैकेज प्रीफ़िक्स को जोड़ने के बाद, पूरी तरह से टेस्टिंग करें. इससे, किसी भी तरह की गड़बड़ी या अनचाहे व्यवहार का पता लगाया जा सकता है और उसे ठीक किया जा सकता है.
- ऐप्लिकेशन पैकेज आखिर में जोड़ें. अगर आपके ऐप्लिकेशन पैकेज में रिफ़्लेक्शन का इस्तेमाल ज़्यादा नहीं किया जाता है, तो ऐप्लिकेशन पैकेज को
packageScopeमें शामिल करें. साथ ही, ज़रूरत के हिसाब से कीप नियमों को धीरे-धीरे जोड़ें. अगर आपके ऐप्लिकेशन पैकेज में रिफ़्लेक्शन का इस्तेमाल ज़्यादा होता है, तोpackageScopeमें पैकेज शामिल करें. साथ ही, ज़रूरी पैकेज के लिए पैकेज-वाइड कीप नियम जोड़ें. निजी डेटा के रखरखाव के नियमों को बेहतर बनाने के लिए, उन्हें बार-बार दोहराएं. - अपने पूरे ऐप्लिकेशन में R8 का इस्तेमाल करें. जब आपके ऐप्लिकेशन की ज़्यादातर डिपेंडेंसी,
packageScopeके एलान में शामिल हो जाएं और आपका ऐप्लिकेशन स्टेबल हो जाए, तबpackageScopeको हटा दें, ताकि पूरे ऐप्लिकेशन को फ़ुल मोड में ऑप्टिमाइज़ किया जा सके.