Android
ProGuard क्या है? Android में क्या उपयोग है?
खोज…
परिचय
Proguard मुक्त जावा वर्ग फ़ाइल संकोचनकर्ता, आशावादी, पर्यवेक्षक, और पूर्ववर्ती है। यह अप्रयुक्त वर्गों, क्षेत्रों, विधियों और विशेषताओं का पता लगाता है और हटाता है। यह बाइटकोड को अनुकूलित करता है और अप्रयुक्त निर्देशों को हटाता है। यह शेष वर्गों, क्षेत्रों, और विधियों का नाम बदलकर संक्षिप्त अर्थहीन नामों का उपयोग करता है।
अपने कोड और संसाधनों को प्रोगार्ड से सिकोड़ें
अपनी एपीके फ़ाइल को यथासंभव छोटा बनाने के लिए, आपको अपने रिलीज़ बिल्ड में अप्रयुक्त कोड और संसाधनों को हटाने के लिए सिकुड़ने में सक्षम होना चाहिए। यह पृष्ठ वर्णन करता है कि निर्माण के दौरान किस कोड और संसाधनों को रखना या छोड़ना है, इसे कैसे करना है और कैसे निर्दिष्ट करना है।
कोड सिकुड़ रहा है ProGuard के साथ, जो आपके पैक किए गए ऐप से अप्रयुक्त वर्गों, फ़ील्ड्स, विधियों और विशेषताओं का पता लगाता है और हटाता है, जिसमें शामिल कोड लाइब्रेरीज़ (64k संदर्भ सीमा के आसपास काम करने के लिए इसे एक मूल्यवान उपकरण बनाना) भी शामिल है। ProGuard भी bytecode का अनुकूलन करता है, अप्रयुक्त कोड के निर्देशों को हटाता है, और शेष वर्गों, क्षेत्रों और छोटे नामों के साथ तरीकों को बाधित करता है। Obfuscated कोड आपके एपीके को रिवर्स इंजीनियर के लिए मुश्किल बनाता है, जो विशेष रूप से मूल्यवान है जब आपका ऐप सुरक्षा-संवेदनशील सुविधाओं का उपयोग करता है, जैसे लाइसेंस सत्यापन।
ग्रेडिंग के लिए एंड्रॉइड प्लगइन के साथ संसाधन सिकुड़ रहा है, जो आपके पैक किए गए एप्लिकेशन से अप्रयुक्त संसाधनों को हटा देता है, जिसमें कोड लाइब्रेरी में अप्रयुक्त संसाधन भी शामिल हैं। यह कोड सिकुड़ने के साथ काम करता है जैसे कि एक बार अप्रयुक्त कोड हटा दिया गया है, किसी भी संसाधन को अब संदर्भित नहीं किया जा सकता है और साथ ही सुरक्षित रूप से हटाया जा सकता है।
अपने कोड को सिकोड़ें
ProGuard
साथ कोड सिकुड़ने को सक्षम करने के लिए, अपने build.gradle
फ़ाइल में उपयुक्त बिल्ड प्रकार में minifyEnabled
सच को जोड़ें।
ध्यान रखें कि कोड सिकुड़ना बिल्ड टाइम को धीमा कर देता है, इसलिए यदि संभव हो तो आपको अपने डिबग बिल्ड पर इसका उपयोग करने से बचना चाहिए। हालाँकि, यह महत्वपूर्ण है कि आप परीक्षण के लिए उपयोग किए गए अपने अंतिम एपीके पर सिकुड़ते हुए कोड को सक्षम करें, क्योंकि यह बगों को पेश कर सकता है यदि आप पर्याप्त रूप से अनुकूलित नहीं करते हैं कि किस कोड को रखना है।
उदाहरण के लिए, build.gradle
फ़ाइल से निम्न स्निपेट रिलीज़ बिल्ड के लिए कोड सिकुड़ने में सक्षम बनाता है:
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
...
}
के अलावा minifyEnabled
संपत्ति, proguardFiles
संपत्ति को परिभाषित करता है ProGuard rules
:
GetDefaultProguardFile ('proguard-android.txt') विधि को एंड्रॉइड एसडीके tools/proguard/ folder
से डिफ़ॉल्ट प्रोगार्ड सेटिंग्स मिलती है। युक्ति: और भी अधिक कोड सिकुड़ने के लिए, एक ही स्थान पर proguard-android-optimize.txt
फ़ाइल आज़माएं। इसमें समान ProGuard नियम शामिल हैं, लेकिन अन्य ऑप्टिमाइज़ेशन के साथ जो आपके APK आकार को और कम करने और इसे तेज़ी से चलाने में मदद करने के लिए bytecode स्तर पर - अंदर और पूरे तरीकों पर विश्लेषण करते हैं। proguard-rules.pro
फ़ाइल वह जगह है जहाँ आप कस्टम प्रोगार्ड नियम जोड़ सकते हैं। डिफ़ॉल्ट रूप से, यह फ़ाइल मॉड्यूल (build.gradle फ़ाइल के बगल में) की जड़ में स्थित है। प्रत्येक बिल्ड संस्करण के लिए विशिष्ट ProGuard नियम जोड़ने के लिए, संबंधित productFlavor
ब्लॉक में एक और productFlavor
गुण जोड़ें। उदाहरण के लिए, निम्न ग्रेड फ़ाइल में स्वाद 2 उत्पाद स्वाद के लिए flavor2-rules.pro जोड़ता है। अब स्वाद 2 सभी तीन ProGuard नियमों का उपयोग करता है क्योंकि रिलीज ब्लॉक से भी लागू होते हैं।
android {
...
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
productFlavors {
flavor1 {
}
flavor2 {
proguardFile 'flavor2-rules.pro'
}
}
}