2016-06-23 15 views
7

dex2jar और jdgui2 जैसे उपकरणों के साथ एपीके की सामग्री का निरीक्षण करना बहुत आसान है।कॉर्डोवा एंड्रॉइड 5.1.1 एपीके obfuscation proguard भ्रम के साथ

हम अपने कॉर्डोवा प्रोजेक्ट में कुछ कक्षाओं को "संरक्षित" करने के लिए प्रोगुआर्ड का उपयोग करने की कोशिश कर रहे हैं जिसमें ऐसी जानकारी शामिल है जिसमें हम गुप्त रखना चाहते हैं (मुख्य रूप से कुछ सामग्री को डिक्रिप्ट करने के लिए कुंजी जो हम अपने ग्राहक के लिए सुरक्षा करने का प्रयास करते हैं)।

हम इसे सही नहीं समझ सकते हैं। ऐप दुर्घटनाग्रस्त हो जाता है, या यह obfuscated नहीं है।

हम अपने build.gradle को जोड़ा गया:

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

हमारे proguard.pro शामिल हैं:

-keep class !com.smartmobilesoftware.** (*; } 

smartmobilesoftware एक inAppPurchases प्लगइन है।

उस पैकेज में हमने कुछ कक्षाओं को संशोधित किया, जो बिना किसी प्रोजेक्ट के महान काम करता है। https://issues.apache.org/jira/browse/CB-9269

यहाँ जो मारियो निम्नलिखित का दावा है::

मैं निम्नलिखित "Proguard समर्थन लापता" पाया "ठीक है, आप ProGuard Cordova के साथ उपयोग नहीं करना चाहिए, या कम से कम, वहाँ के लिए इसका इस्तेमाल करने के लिए कोई अच्छा कारण नहीं है, चूंकि आप इसे minifyEnabled के साथ उपयोग नहीं कर सकते हैं, जो वास्तव में ProGuard को सही तरीके से काम करता है। चूंकि कॉर्डोवा पूरे स्थान पर प्रतिबिंब का उपयोग करता है, इसलिए यह कॉर्डोवा को बिना किसी प्रोजेवार्ड -रूल्स.प्रो फ़ाइल के उड़ाने का एक अच्छा तरीका है। " !

हम ProGuard बताकर कि मुद्दा यह है कि सभी वर्गों com.smartmobilesoftware में लोगों को छोड़कर ऐसे ही छोड़ दिया जाना चाहिए (रखें वर्ग com.smartmobilesoftware से बचने के लिए कोशिश की ** (*;।})

मैं कर रहा हूँ यकीन नहीं अगर यह हमारे कोड witih एक समस्या है (लेकिन कोड ProGuard बिना ठीक काम करता है), प्लगइन, या ProGuard ही।

हम किसी भी सार्थक त्रुटियों नहीं दिख रहा।

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

क्या कोई इस मुद्दे पर कुछ प्रकाश डाल सकता है?

उत्तर

3

ऐसा लगता है कि पैकेज में कोड com.smartmobilesoftware एक कॉर्डोवा प्लगइन लागू करता है। इस मामले में आप अन्यथा Cordova ठीक से उन कार्यावधि में (हाल ही में एक Cordova रिहाई के लिए) प्राप्त नहीं कर सकेंगे, कम से कम कुछ और वर्गों रखने की जरूरत है:

-keep class * extends org.apache.cordova.CordovaPlugin 
+0

प्रतिक्रिया देने के लिए धन्यवाद। मैं अभी तक जांच नहीं कर पा रहा हूं, लेकिन बक्षीस समाप्त हो रहा था, इसलिए मैंने आपको यह दिया। :-) यदि आपका सुझाव काम करता है तो मैं यहां जवाब दूंगा। –

2

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

To resolve this you have to add : 

-keep class org.apache.cordova.** { 
    *; 
} 

-keep public class * extends org.apache.cordova.CordovaPlugin 
0

@Erwin मोलर इस मुद्दे के लिए आप संभव फ़ाइलों फिल्टर के रूप में कम के रूप में सुरक्षित करना पड़ सकता है इसलिए यहाँ कहानियो से आप ProGuard नियम नीचे कोशिश करते हैं और यह भी चलाने की कोशिश कर सकते हैं। शुभकामनाएं

-keep class org.apache.cordova.engine.** { *; } 
-keep public class * extends org.apache.cordova.CordovaPlugin 
संबंधित मुद्दे