2013-07-22 9 views
6

जब मेरे एंड्रॉयड परियोजना का निर्माण, मैं ProGuard सक्षम करने के लिए build.gradle फ़ाइल में निम्न को शामिल किया है:एंड्रॉयड Gradle निर्माण जिसके परिणामस्वरूप apk शामिल दोनों अस्पष्ट और गैर समझ से परे कक्षाएं

buildTypes { 
    release { 
     runProguard true 
     proguardFile 'proguard-project.txt' 
     proguardFile '../common/proguard-shared.txt' 
     proguardFile getDefaultProguardFile('proguard-android.txt') 
    } 
    } 

सब कुछ ठीक है बनाता है, लेकिन जब मैं परिणामी डीएक्स फ़ाइल को अलग करता हूं, यह पता चला है कि दोनों obfuscated और गैर-obfuscated फाइलें हैं।

उदाहरण के लिए, दोनों सामान्य। बेस 64 और सामान्य.ए मौजूद हैं, पहला गैर-obfuscated है, जबकि दूसरा है।

इसके बारे में निश्चित नहीं है, लेकिन परियोजना के पास एक गैर-विशिष्ट संरचना है। यह 40 एंड्रॉइड ऐप्स से अधिक के साथ एक बड़ा एंड्रॉइड कोड बेस होने का नतीजा है। हम मौजूदा ग्रहण आधारित निर्माण के साथ-साथ एक ग्रेड आधारित आधारित प्रवाह प्रवाह बनाने की कोशिश कर रहे हैं।

यदि सब कुछ ठीक हो जाता है, तो हम फ़ाइल संरचना को और अधिक देशी ग्रेडल के रूप में बदलने का इरादा रखते हैं, और स्वादों की कमी के लिए समायोजित करने के लिए बनाए गए कई पुस्तकालयों के साथ स्वाद और निर्माण-प्रकारों का उपयोग शुरू करना चाहते हैं। । -> डी -> सी -> बी -> एक

जैसे

ई:

परियोजना ई ऊपर इस तरह पुस्तकालयों की एक श्रृंखला पर निर्भर करता है ई प्रोजेक्ट लाइब्रेरी डी पर निर्भर करता है जो लाइब्रेरी सी पर निर्भर करता है ... ए

उत्तर

7

इस पर ध्यान देने के बाद, मुझे पता चला कि यह एक समस्या है यदि आप पहली बार प्रोजेक्ट सक्षम किए बिना बनाते हैं और फिर बिल्ड करते हैं यह सक्षम के साथ। यह डेक्स के वृद्धिशील मोड के कारण है।

आप प्रोजेवार्ड सक्षम करने के बाद एक स्वच्छ निर्माण कर सकते हैं और यह इसे ठीक करेगा।

संपादित करें: मैंने पहले संकेत दिया था कि आप डीईएक्स में वृद्धिशील मोड को अक्षम कर सकते हैं, लेकिन यह पता चला है कि वास्तव में मदद नहीं करता है!

+0

काम करता है, धन्यवाद, @Xav! रिलीज उम्मीदवार बनाने से पहले "मजबूर" करने के लिए कोई सुझाव दिया गया तरीका? – Guy

+2

क्या आपके लिए '' साफ इकट्ठा करें '' 'आपके लिए काम करता है? –

+0

@ थूहरिंह यह करता है। बस सुनिश्चित करें कि आप सभी निर्भरताओं के लिए "साफ" करें (यानी यदि आपके पास बहु-मॉड्यूल प्रोजेक्ट है, तो रूट को पहले साफ करें, और फिर इकट्ठा करें जो आपको आवश्यक सबमिशन दें)। – Guy

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