DEX कोड ऑप्टिमाइज़ेशन

DEX कोड ऑप्टिमाइज़ेशन, Android की ज़रूरी जानकारी से जुड़ी एक खोज है. इससे आपको अपने ऐप्लिकेशन की कंपाइलेशन क्वालिटी, साइज़, और परफ़ॉर्मेंस को मॉनिटर करने और उसे बेहतर बनाने में मदद मिलती है. R8 या अन्य टूल (जैसे कि ProGuard के साथ काम करने वाले ऑप्टिमाइज़र या सेकंडरी DEX पोस्ट-प्रोसेसर) का इस्तेमाल करके, अपने कोड को ऑप्टिमाइज़ और अस्पष्ट बनाने से, आपके ऐप्लिकेशन के DEX का साइज़ कम हो जाता है. साथ ही, रनटाइम परफ़ॉर्मेंस बेहतर होती है और मेमोरी का इस्तेमाल कम होता है.

DEX या Dalvik Executable फ़ाइलों में, आपके ऐप्लिकेशन को चलाने के लिए इस्तेमाल किया गया कंपाइल किया गया कोड होता है. इसमें आम तौर पर Java और Kotlin कोड शामिल होता है. हालांकि, इसमें कंपाइल किया गया C++ कोड या .so फ़ाइलें शामिल नहीं होती हैं.

Android की ज़रूरी जानकारी सेक्शन में, सभी ऐप्लिकेशन और गेम के लिए DEX कोड ऑप्टिमाइज़ेशन मेट्रिक की रिपोर्ट मिलती है. हालांकि, यह सिर्फ़ उन ऐप्लिकेशन और गेम के लिए थ्रेशोल्ड लागू करता है जो साइज़ से जुड़ी कुछ खास ज़रूरी शर्तों को पूरा करते हैं.

समस्या का पता लगाना

'Android की ज़रूरी जानकारी' सुविधा, आपको तब सूचना दे सकती है, जब आपके ऐप्लिकेशन के DEX कोड ऑप्टिमाइज़ेशन का लेवल कम हो. इसमें R8 का इस्तेमाल करने वाले ऐप्लिकेशन और गेम के लिए, कोड को उलझाना, छोटा करना, और ऑप्टिमाइज़ करना शामिल है. R8 का इस्तेमाल न करने वाले ऐप्लिकेशन के लिए, Android की ज़रूरी जानकारी में ऑप्टिमाइज़ेशन, श्रिंकिंग, और अस्पष्टता की दर की जांच करने की कोशिश की जाती है. हालांकि, जहां ज़रूरी हो वहां अस्पष्टता के अनुमानित तरीके का इस्तेमाल किया जाता है.

ऑप्टिमाइज़ेशन की स्थिति को मॉनिटर करना

Android की ज़रूरी जानकारी की मदद से, अपने ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाया जा सकता है. इसके लिए, यह सुविधा Play Console के ज़रिए आपको सूचनाएं भेजती है. ऐसा तब होता है, जब आपका ऐप्लिकेशन कोड ऑप्टिमाइज़ेशन के लिए तय किए गए कम से कम प्रतिशत को पूरा नहीं करता. कोड छोटा करने, ऑप्टिमाइज़ करने, और कोड को समझने में मुश्किल बनाने की प्रोसेस की पूरी जानकारी के लिए, R8 Configuration Analyzer का इस्तेमाल करना लेख पढ़ें.

AGP 8.10 या इसके बाद के वर्शन के नए पैच का इस्तेमाल करके बनाए गए ऐप्लिकेशन के लिए, ये प्रतिशत शामिल की गई r8.json फ़ाइल से लिए जाते हैं.

AGP के पुराने वर्शन या जहां r8.json फ़ाइल शामिल नहीं है वहां प्रतिशत की गणना, mapping.txt फ़ाइल के आधार पर की जाती है. अगर यह फ़ाइल शामिल नहीं है, तो DEX के अनुमानित आंकड़ों का इस्तेमाल किया जाता है.

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

DEX का कुल साइज़ कम से कम

Android की ज़रूरी जानकारी, सभी ऐप्लिकेशन के लिए कोड ऑप्टिमाइज़ेशन मेट्रिक का हिसाब लगाती है. हालांकि, आपको सिर्फ़ तब सूचनाएं मिलेंगी, जब आपका ऐप्लिकेशन बंडल, DEX के कुल साइज़ की इन ज़रूरी शर्तों को पूरा करता हो:

  • ऐप्लिकेशन: बंडल में कम से कम 10 एमबी का DEX कोड होना चाहिए. यह कोड, कंप्रेस नहीं किया गया होना चाहिए
  • गेम: बंडल में कम से कम 50 एमबी का DEX कोड होना चाहिए. यह कोड, कंप्रेस न किए गए साइज़ के हिसाब से मापा जाता है

Android की ज़रूरी जानकारी में, आपके ऐप्लिकेशन का DEX साइज़ दिखता है. हालांकि, कमांड लाइन का इस्तेमाल करके, इसे स्थानीय तौर पर भी मेज़र किया जा सकता है:

  unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'

Android की ज़रूरी जानकारी के लिए, स्कोर का हिसाब लगाने के लिए इस्तेमाल किए गए मेटाडेटा की जांच करने के लिए, अपने ऐप्लिकेशन बंडल से r8.json फ़ाइल निकालें:

unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools/r8.json