2010-09-21 7 views
6

मैं एक्लिप्स में विकसित एक एंड्रॉइड एप्लिकेशन प्रकाशित कर रहा हूं और जैसा कि शीर्षक में बताया गया है, मैं विशेष रूप से एक हस्ताक्षरित ऐप निर्यात करने के लिए प्रोगार्ड obfuscation को एकीकृत करना चाहता हूं।एक हस्ताक्षरित, obfuscated एंड्रॉइड एप्लिकेशन निर्यात करते समय ग्रहण में ProGuard कैसे स्थापित करें?

किसी को भी चींटी पथ के नीचे जाने के बिना कोई भाग्य था?

+0

जवाब http://stackoverflow.com/a/11351168/2291 में परिवर्तन है कि एसडीके में परिवर्तन का सम्मान करने के लिए अद्यतन किया गया है का वर्णन करता है uncomment। –

उत्तर

3

ठीक है, इस विषय पर सबसे अधिक प्रासंगिक और हाल ही में पोस्ट है:

http://android-developers.blogspot.com/2010/09/proguard-android-and-licensing-server.html

यह चींटी का उपयोग खुराक, लेकिन सभी कठिन भागों आप के लिए किया जाता है, और जब तक आप निर्देशों का पालन करें , यह काम करता हैं। एक नोट: अद्यतन को केवल एसडीके आर 7 + के साथ काम न छोड़ें, और एवीडी अपडेट के लिए ग्रहण के अपडेट को चलाने का बुरा विचार भी नहीं है।

और बाहरी जार जोड़ने किसी के लिए, सेटअप ProGuards procfg.txt और जोड़ें:

-libraryjars {पथ} {} file_name .jar

4

मैं भी ऐसा करना चाहता था चींटी या आदेश का उपयोग कर के बिना लाइन दृष्टिकोण। यहां बताया गया है (केवल पर ग्रहण + Windows) काम किया है:।

  • (आप Proguard डाउनलोड करने की आवश्यकता स्क्रिप्ट यह यहाँ मिल जाने की उम्मीद: C: \ android-sdk_r04-windows \ ProGuard \ lib \ proguard.jar)।

  • एक Windows बैच फ़ाइल बनाएँ, "C: \ android-sdk_r04-windows \ obfusc.bat":


    DEL /S /Q obfuscated 
    MKDIR obfuscated 

    java -jar C:\android-sdk_r04-windows\proguard\lib\proguard.jar @android.pro 

    DEL /S /Q bin\com\ 
    DEL /S /Q bin\org\ 

    ROBOCOPY obfuscated\com bin\com /S 
  • ग्रहण में, अपने Android के गुणों पृष्ठ लाने प्रोजेक्ट, "बिल्डर्स" फलक का चयन करें और "प्रोग्राम" प्रकार का एक नया निर्माता जोड़ें। मुख्य टैब के "स्थान" फ़ील्ड में पिछले चरण में स्क्रिप्ट का पूर्ण पथ डाल दिया गया था। "कार्य निर्देशिका" फ़ील्ड में वेरिएबल $ {build_project} डाल दिया गया है। "बिल्ड विकल्प" टैब में "रन बिल्डर" के अंतर्गत "क्लीन के बाद" चुनें।

  • सुनिश्चित करें कि यह बिल्ड उपकरण एंड्रॉइड पैकेज निर्माता से ठीक पहले, आखिरी के बगल में आता है।

  • एंड्रॉइड प्रोजेक्ट के रूट फ़ोल्डर में एक प्रोजेर्ड कॉन्फ़िगरेशन फ़ाइल बनाएं। मैं इन्हें थोड़ा सा अनुकूलित करता हूं और उन्हें संशोधन नियंत्रण में शामिल करता हूं, लेकिन यह आपके ऊपर है। फ़ाइल का उपयोग मैं के रूप में स्क्रिप्ट में नाम कहा जाता है "android.pro,", और देव ब्लॉग में config के समान है लेकिन उदाहरण के लिए, injar, outjar, और libraryjar बयानों के साथ एक शीर्ष लेख में शामिल हैं:


    -injars  bin(!.svn/**) 
    -outjars  obfuscated 
    -libraryjars C:\android-sdk_r04-windows\android-sdk-windows\platforms\android-1.6\android.jar 
    -libraryjars C:\GoogleAnalyticsAndroid_0.7\libGoogleAnalytics.jar 

    -optimizationpasses 5 
    -dontusemixedcaseclassnames 
    -dontskipnonpubliclibraryclasses 
    -dontpreverify 
    -verbose 
    -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 

    -printmapping proguard.map 
    -keepattributes SourceFile,LineNumberTable 

    -keep public class * extends android.app.Activity 
    -keep public class * extends android.app.Application 
    -keep public class * extends android.app.Service 
    -keep public class * extends android.content.BroadcastReceiver 
    -keep public class * extends android.content.ContentProvider 
    -keep public class com.android.vending.licensing.ILicensingService 

    -keepclasseswithmembernames class * { 
     native ; 
    } 

    -keepclasseswithmembernames class * { 
     public (android.content.Context, android.util.AttributeSet); 
    } 

    -keepclasseswithmembernames class * { 
     public (android.content.Context, android.util.AttributeSet, int); 
    } 

    -keepclassmembers enum * { 
     public static **[] values(); 
     public static ** valueOf(java.lang.String); 
    } 
  • आप इस बिल्डर को अधिकांश समय से बंद रखना चाहते हैं। जब यह एक obfuscated एपीके का परीक्षण या निर्यात करने का समय है, तो इसे चालू करें और फिर ग्रहण से "प्रोजेक्ट> क्लीन" करें, जिसमें परियोजना और किसी पुस्तकालय परियोजनाओं पर निर्भर करता है।

मुझे लगता है कि यह इसके बारे में है।

+0

क्या अभी भी नए ग्रहण और एंड्रॉइड एसडीके के साथ इसकी आवश्यकता है? – Yar

+1

तो सभी चरणों के बाद obfuscated एपीके कहाँ संग्रहित हो जाता है? – EnthuDeveloper

1

आप ग्रहण का उपयोग कर रहे हैं, तो सिर्फ project.properties लाइन

# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 
संबंधित मुद्दे

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