R8 या अन्य टूल (जैसे कि ProGuard के साथ काम करने वाले ऑप्टिमाइज़र या सेकंडरी DEX पोस्ट-प्रोसेसर) का इस्तेमाल करके, अपने कोड को ऑप्टिमाइज़ और अस्पष्ट बनाने से, आपके ऐप्लिकेशन के DEX का साइज़ कम हो जाता है. साथ ही, रनटाइम परफ़ॉर्मेंस बेहतर होती है और मेमोरी का इस्तेमाल कम होता है.
DEX या Dalvik Executable फ़ाइलों में, आपके ऐप्लिकेशन को चलाने के लिए इस्तेमाल किया गया कंपाइल किया गया कोड होता है. इसमें आम तौर पर Java और Kotlin कोड शामिल होता है. हालांकि, इसमें कंपाइल किया गया C++ कोड या .so फ़ाइलें शामिल नहीं होती हैं.
स्थानीय तौर पर R8 कोड ऑप्टिमाइज़ेशन को मेज़र करना
कमांड लाइन का इस्तेमाल करके, अपने ऐप्लिकेशन बंडल के कंप्रेस न किए गए DEX का साइज़ स्थानीय तौर पर मेज़र करने के लिए, यह कमांड चलाएं:
unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'
अगर आपका ऐप्लिकेशन R8 की मदद से ऑप्टिमाइज़ होता है, तो R8 कॉन्फ़िगरेशन ऐनलिसिस टूल का इस्तेमाल करके, अपने ऐप्लिकेशन बंडल के ऑप्टिमाइज़ेशन, अस्पष्टता, और साइज़ को छोटा करने की प्रोसेस को मेज़र किया जा सकता है. कोड को छोटा करने, ऑप्टिमाइज़ करने, और अस्पष्ट करने की पूरी जानकारी के लिए, R8 Configuration Analyzer का इस्तेमाल करना लेख पढ़ें. R8 Configuration Analyzer रिपोर्ट, R8 Analyzer Skill में भी शामिल है.
AGP 8.10 या इसके बाद के वर्शन के लिए, अपने ऐप्लिकेशन बंडल में एम्बेड किए गए, ऑप्टिमाइज़ेशन के बाद के मेटाडेटा की जांच करने के लिए, r8.json फ़ाइल को एक्सट्रैक्ट करें:
unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools/r8.json
समस्या ठीक करना
DEX कोड ऑप्टिमाइज़ेशन के कम स्कोर की समस्या हल करने के लिए, अपने बिल्ड सिस्टम और ऑप्टिमाइज़र के आधार पर दिए गए सुझावों की समीक्षा करें:
Android Gradle प्लगिन और R8
R8 DEX कोड ऑप्टिमाइज़ेशन स्कोर को बेहतर बनाने के लिए, R8 ऑप्टिमाइज़ेशन को बेहतर बनाना पर दिए गए दिशा-निर्देश देखें. R8 Analyzer skill का इस्तेमाल करके, अपने ऐप्लिकेशन के कीप रूल को ऑप्टिमाइज़ करने के बारे में ज़्यादा जानकारी पाई जा सकती है.
R8 के अलावा अन्य बिल्ड सिस्टम और DEX पोस्ट-प्रोसेसर
अगर आपकी बिल्ड पाइपलाइन में कस्टम बिल्ड टूल या सेकंडरी DEX पोस्ट-प्रोसेसर का इस्तेमाल किया जाता है, तो अपने ऐप्लिकेशन के ऑप्टिमाइज़ेशन को बेहतर बनाने के लिए, यह तरीका अपनाएं:
- Android Studio में अपना ऐप्लिकेशन बंडल खोलें और उसे APK Analyzer में देखें.
- सभी
.dexफ़ाइलें चुनें. - सबसे बड़े साइज़ वाली फ़ाइलों पर खास ध्यान दें. इसके लिए, "नामों को साफ़ तौर पर दिखाएं" बटन को टॉगल करें (ध्यान दें: इसके लिए, आपको
mapping.txtफ़ाइल अपलोड करनी होगी). अगर आपको लगता है कि धुंधली की गई कुछ फ़ाइलें अब भी बड़ी हैं, तो हो सकता है कि उन पर पैकेज के लिए तय किए गए कीप नियमों का असर पड़ा हो. - अपनी
proguard-rules.proफ़ाइलconfiguration.txtमें देखें. अगर R8 का इस्तेमाल नहीं किया जा रहा है, तो अपने ऑप्टिमाइज़र के लिए इसी तरह की फ़ाइल देखें. इसके बाद, उन पैकेज से मेल खाने वाले कीप नियमों को खोजें जिन्हें अस्पष्ट नहीं किया जा रहा है. उदाहरण के लिए, अगरcom.foo.आपके डेक्स में एक बड़ा पैकेज है, तो-keep com.foo.**या-keep com.foo.bar.**फ़ॉर्मैट के कीप नियमों को ढूंढें. - ध्यान रखें कि लाइब्रेरी के उपभोक्ता के निजी डेटा के रखरखाव के नियमों की पहचान करना इतना आसान नहीं होता. अगर आपको लगता है कि लाइब्रेरी के उपभोक्ता से जुड़ा कोई नियम, ऑप्टिमाइज़ेशन पर असर डाल रहा है, तो उसे स्थानीय तौर पर पुष्टि की जा सकती है. इसके लिए, उसे AGP के हाल ही के वर्शन का इस्तेमाल करके, स्टैंडअलोन सैंपल ऐप्लिकेशन में जोड़ें. इसके बाद, R8 कॉन्फ़िगरेशन ऐनलिसिस की मदद से उसकी जांच करें.