2016-03-07 5 views
6

पर रोक न दें जब मैं अपने ऐप को छोटा नहीं करता हूं तो मैं अधिकतम विधि गणना तक पहुंचता हूं और डीएक्स फ़ाइल का निर्माण विफल रहता है। build.gradle में minify को सक्षम करके इसे टाला जा सकता है। हालांकि, नकारात्मकता यह है कि अब कोड खराब हो गया है। यह रिलीज बिल्ड के लिए ठीक है लेकिन यह डीबग बिल्ड के लिए समस्याग्रस्त है।एंड्रॉइड ऐप को छोटा करें लेकिन इसे

क्या डीबग बिल्ड को कम करने के लिए धीरे-धीरे बताने का कोई तरीका है लेकिन इसे खराब नहीं किया गया है?

उत्तर

19

हां, आप डीबग बिल्ड को कम करने के लिए ProGuard का उपयोग कर सकते हैं।

कुंजी डीबग बिल्ड के लिए ProGuard कॉन्फ़िगरेशन में -dontobfuscate विकल्प का उपयोग करना है।

build.gradle में इस सेटिंग का उपयोग करें:

buildTypes { 
    release { 
     minifyEnabled true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 
      'proguard-rules.pro' 
    } 
    debug { 
     minifyEnabled true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 
      'proguard-rules.pro', 
      'proguard-rules-debug.pro' 
    } 
} 

proguard-rules.pro करने के लिए अपने रिहाई ProGuard विन्यास लिखें।

रिलीज और डीबग के लिए एक ही कॉन्फ़िगरेशन का उपयोग करें। इस तरह आप सुनिश्चित करते हैं कि कोई आवश्यक कोड छीन लिया नहीं गया है। और डीबग मिनिफिकेशन बिल्ड को तोड़ नहीं देता है।

डीबग बिल्ड के लिए अतिरिक्त प्रोगार्ड कॉन्फ़िगरेशन फ़ाइल proguard-rules-debug.pro जोड़ें। इसमें केवल डीबग के लिए उपयोग किए जाने वाले नियम होना चाहिए। इस मामले में केवल जोड़ें:

-dontobfuscate 
2

एक सरल समाधान का निर्माण विन्यास के अंदर minifyEnabled true और useProgaurd false जोड़ना है। लेकिन डीबग के लिए कोड सिकुड़ने की अनुशंसा नहीं की जाती है से पता चलता है कि कोड सिकुड़ने से बिल्ड समय धीमा हो जाता है, इसलिए यदि संभव हो तो आपको इसे अपने डीबग बिल्ड पर उपयोग करने से बचना चाहिए। संदर्भ https://developer.android.com/studio/build/shrink-code.html

1

Tomik के जवाब तकनीकी रूप से सही है, लेकिन यह अपने बनाता है के लिए Instant Run का उपयोग कर समर्थन नहीं करता। के रूप में official guide on code-shrinking में बताया:

त्वरित रन के साथ सिकुड़ कोड सिकुड़ते महत्वपूर्ण आप के लिए है, जबकि संवर्द्धित अपने अनुप्रयोग के निर्माण कोड सक्षम, प्रयोगात्मक कोड shrinker कि Gradle के लिए Android प्लगइन में बनाया गया है की कोशिश करो। यह सिकुड़ने वाला प्रोगार्ड के विपरीत इंस्टेंट रन का समर्थन करता है।

आप उसी कॉन्फ़िगरेशन फ़ाइलों का उपयोग ProGuard के रूप में एंड्रॉइड प्लगइन सिकुंकर को कॉन्फ़िगर कर सकते हैं। हालांकि, एंड्रॉइड प्लगइन सिकुड़ने वाला आपके कोड को खराब या अनुकूलित नहीं करता है-यह केवल अप्रयुक्त कोड को हटा देता है। तो आपको इसे अपने डिबग बिल्ड के लिए ही उपयोग करना चाहिए, और अपनी रिलीज बिल्ड के लिए ProGuard सक्षम करें ताकि आपकी रिलीज एपीके का कोड obfuscated और अनुकूलित हो।

तो उचित समाधान अपने डिबग इस तरह का निर्माण सेटअप करने के लिए होगा:

android { 
    buildTypes { 
     debug { 
      minifyEnabled true 
      useProguard false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 
        'proguard-rules.pro' 
     } 
} 

इस तरह अपने डीबग बिल्ड में कोड अनुकूलित नहीं प्राप्त करता है और न ही समझ से परे है, लेकिन सिकुड़ कर दिया जाएगा। यह Instant Run का उपयोग करते समय भी लागू होता है।

संबंधित मुद्दे