2013-08-15 10 views
20

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

संपादित करें: आपके उत्तरों के लिए धन्यवाद, लेकिन मुझे कहीं भी proguard.cfg फ़ाइल नहीं मिल रही है। केवल गुण local.properties फ़ाइल मैं इस परियोजना के रूट निर्देशिका में है फ़ाइल है और मैं यह मिल गया जब मैं एंड्रॉयड स्टूडियो में खोलें:

# This file is automatically generated by Android Studio. 
# Do not modify this file -- YOUR CHANGES WILL BE ERASED! 
# 
# This file must *NOT* be checked into Version Control Systems, 
# as it contains information specific to your local configuration. 

# Location of the SDK. This is only used by Gradle. 
# For customization when using a Version Control System, please read the 
# header note. 
sdk.dir=C:/.../... 

उत्तर

17

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

ProGuard भी दो अन्य महत्वपूर्ण कार्य है। अनुकूलन जावा बाइटकोड के साथ काम करता है, हालांकि, और चूंकि एंड्रॉइड डाल्विक बाइटकोड पर चलता है जो जावा बाइटकोड से परिवर्तित होता है, कुछ अनुकूलन बहुत अच्छी तरह से काम नहीं करेंगे। तो आपको वहां सावधान रहना चाहिए।

एंड्रॉइड वेबसाइट पर instructions on how to use proguard हैं। मुख्य बात की जांच करनी है आप लाइन

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 

अपने project.properties फ़ाइल में होता है। चूंकि आप उल्लेख करते हैं कि आप एंड्रॉइड स्टूडियो का उपयोग करते हैं और आपके पास यह फ़ाइल नहीं है, लेकिन आपको कॉन्फ़िगरेशन फ़ाइल के बारे में पूछा जाता है, एंड्रॉइड एसडीके (tools/proguard/proguard-android.txt) में से किसी एक को चुनने का प्रयास करें।

+0

आपकी स्पष्टीकरण के लिए धन्यवाद, लेकिन मेरे पास प्रोजेक्ट.प्रोपर्टीज फ़ाइल नहीं है और न ही proguard.cfg फ़ाइल है जिसे उन्होंने एंड्रॉइड वेबसाइट पर बताया है। मेरे पास केवल स्थानीय.प्रोपर्टीज फ़ाइल है। – user2687045

+0

@ user2687045 मैंने उत्तर अपडेट किया है। मैंने एंड्रॉइड स्टूडियो का खुद का उपयोग नहीं किया, हालांकि, यह सिर्फ एक अनुमान है। – Malcolm

2

ProGuard रन के बाद पूरी तरह से वैकल्पिक है, लेकिन अत्यधिक की सिफारिश की है।

आप पा सकते हैं सब आप यहाँ क्या जरूरत है:

proguard.config = proguard.cfg

: http://developer.android.com/tools/help/proguard.html

इसके अलावा, आप अपनी परियोजना के रूट फ़ोल्डर में default.properties फ़ाइल से निम्न पंक्ति को हटा सकते हैं

+0

यह कहता है, "जब आप एक एंड्रॉइड प्रोजेक्ट बनाते हैं, तो प्रोजेक्ट की मूल निर्देशिका में proguard.cfg फ़ाइल स्वचालित रूप से जेनरेट की जाती है।", लेकिन मेरे पास proguard.cfg फ़ाइल नहीं है और न ही प्रोजेक्ट निर्देशिकाओं में कहीं और है। – user2687045

+0

@ user2687045 इसके अलावा आप डिफ़ॉल्ट से निम्न पंक्ति को हटा सकते हैं।प्रोजेक्ट फ़ाइल में आपके प्रोजेक्ट रूट फ़ोल्डर: proguard.config = proguard.cfg – Arseniy

12

प्रोगार्ड का उपयोग करना वैकल्पिक है, और चाहे आप इसका उपयोग करते हैं या नहीं, एपीके को अनपैक करना और अपने संसाधनों (ग्राफिक्स और अन्य संपत्तियों) पर जाना आसान है। यदि आप ProGuard का उपयोग नहीं करते हैं, तो एप्लिकेशन कोड को भी आसानी से पुनर्निर्मित किया जा सकता है, ProGuard के साथ यह बहुत मुश्किल और बोझिल हो जाता है कि यह समझने और समझने के लिए कि क्या होता है (हालांकि पर्याप्त समय और प्रयास असंभव नहीं है)।

ओबफस्केटिंग के बाद भी अपने ऐप का परीक्षण करने के लिए सावधान रहें, क्योंकि यह एप्लिकेशन में बदलाव है और कभी-कभी अनजान चीजें हो सकती हैं, खासकर यदि ओयू प्रतिबिंब का उपयोग कर रहे हैं।

6

ProGuard obfuscation करने के लिए एक महत्वपूर्ण मामला यह है कि, कुछ बुरे लोग एपीके अनपैक करते हैं और उनके मॉड्यूल में खरीद मॉड्यूल इंजेक्ट/प्रतिस्थापित करते हैं। हम उम्मीद नहीं कर सकते कि सभी उपयोगकर्ता केवल Play Store से एपीके डाउनलोड करें, और उपयोगकर्ताओं को उनके खरीद खाते को चोरी किया जा सकता है।

+0

वाह, प्रोजेवार्ड के संबंध में कभी भी उपयोगकर्ता सुरक्षा के बारे में सोचा नहीं। इसका उपयोग करने के लिए निश्चित रूप से एक और कारण है। धन्यवाद। – HopefullyHelpful

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