2010-12-17 14 views
23

जब मैं proguard.cfg के साथ एंड्रॉइड प्रोजेक्ट निर्यात करता हूं, तो सभी संदर्भित .jar फ़ाइलों को भी खराब कर दिया जाता है। मैं उन कुछ .jars को obfuscation से कैसे बाहर निकाल सकता हूं?प्रोगुआर्ड (एंड्रॉइड प्रोजेक्ट) द्वारा obfuscation से बाहरी .jar को कैसे बाहर निकाल सकता हूं?

उत्तर

24

आप चींटी स्क्रिप्ट संपादित नहीं करना चाहते हैं, तो आप रखें विकल्प उन बाहरी जार में कक्षाओं के लिए proguard.cfg को जोड़ सकते हैं। उदाहरण के लिए:

-keep class othercode.** { *; } 

या एक negator युक्त एक नियमित अभिव्यक्ति के साथ:

-keep class !mycode.** { *; } 

मानक चींटी स्क्रिप्ट अभी भी एकल उत्पादन जार में सभी संदर्भित जार मर्ज हो जाएंगे।

+0

मैंने यह भी किया है (लेकिन keepclasseswithmembers क्लास का इस्तेमाल किया और इंटरफ़ेस रखें) यह मेरे मामले में कम या ज्यादा ठीक काम करता है, क्योंकि अलग .jar फ़ाइलों के पास अलग-अलग पैकेज नाम थे ... – alex2k8

+1

यह भी सोचा कि यह नाम रखता है, कोड अभी भी है प्रसंस्कृत और obfuscated प्रतीत होता है। – alex2k8

+0

@Eric कृपया उत्तर दें, एंड्रॉइड स्टूडियो में इन पंक्तियों को जोड़ने के लिए, या तो 'proguard-project.txt' या 'proguard-rules.pro' में? –

6

अपनी कॉन्फ़िगरेशन फ़ाइल में, इनपुट जार के बजाय अपने जार लाइब्रेरी जार के रूप में सेट करें। यह उन्हें छूटे छोड़ देता है।

-libjars <path/to/jars> 
+0

मैं इनपुट या लाइब्रेरी जार सेट नहीं करता हूं। यह प्लेटफॉर्म चींटी स्क्रिप्ट द्वारा किया जाता है। और उस फ़ाइल को संपादित करना मैं बचने की कोशिश करता हूं। – alex2k8

1

ProGuard Maven प्लगइन का उपयोग करते हुए मुझे लगता है कि

<inclusion> 
            <groupId>foo.bar</groupId> 
            <artifactId>foo-bar</artifactId> 
            <library>true</library> 
            <filter>!META-INF/**</filter> 
           </inclusion> 

बाहरी जार करने के लिए

<library>true></library> 

नेतृत्व कहानियो के बाद अंतिम जार में विलय की तरह करते हैं। लेकिन इससे मनोविज्ञान को ओवरराइट किया जा सकता है। मैंने अभी तक यह पता नहीं लगाया है कि सबसे अच्छा तरीका कैसे बचें।

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