मैं एंड्रॉइड स्टूडियो में प्रोग्रार्ड के साथ एक एंड्रॉइड ऐप बना रहा हूं और मेरे प्रोजेक्ट में लाइब्रेरी जार है (na .jar) कि मैं obfuscation और preverification छोड़ना चाहूंगा क्योंकि na.jar से कुछ वर्ग मुझे निर्माण के दौरान त्रुटियां दे रहे हैं। तो मेरी ProGuard कॉन्फ़िग फ़ाइल में, मैं निम्नलिखित विकल्पों केएंड्रॉइड प्रोगार्ड इश्यू - अभी भी "java.io.IOException: कक्षा को संसाधित नहीं कर सकता ..." त्रुटि जब obfuscation छोड़ा जाता है
-dontpreverify
# com.na, org.json are packages in na.jar, don't obfuscate the code in these packages
-keep class com.na.** { *; }
-keep interface com.na.** { *; }
-keep class org.json.** { *; }
-keep interface org.json.** { *; }
हालांकि मैं अभी भी निर्माण की प्रक्रिया के दौरान na.jar में दोषपूर्ण वर्गों से संबंधित निम्न त्रुटियों हो रही है।
Caused by: java.io.IOException: Can't read [C:\StudioProjects\PBActivity\pBActivity\libs\na.jar(;;;;;;!META-INF/MANIFEST.MF)] (Can't process class [com/na/util/BinConverter.class] (256))
at proguard.InputReader.readInput(InputReader.java:188)
at proguard.InputReader.readInput(InputReader.java:158)
at proguard.InputReader.readInput(InputReader.java:136)
at proguard.InputReader.execute(InputReader.java:66)
at proguard.ProGuard.readInput(ProGuard.java:207)
at proguard.ProGuard.execute(ProGuard.java:81)
at proguard.gradle.ProGuardTask.proguard(ProGuardTask.java:1074)
at com.android.build.gradle.tasks.AndroidProGuardTask.proguard(AndroidProGuardTask.java:87)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63)
... 62 more
Caused by: java.io.IOException: Can't process class [com/na/util/BinConverter.class] (256)
at proguard.io.ClassReader.read(ClassReader.java:112)
at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87)
at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87)
at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87)
at proguard.io.JarReader.read(JarReader.java:65)
at proguard.io.DirectoryPump.readFiles(DirectoryPump.java:65)
at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.java:53)
at proguard.InputReader.readInput(InputReader.java:184)
... 70 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: 256
at proguard.classfile.ProgramClass.getString(ProgramClass.java:116)
at proguard.classfile.io.ProgramClassReader.createAttribute(ProgramClassReader.java:990)
at proguard.classfile.io.ProgramClassReader.visitProgramMethod(ProgramClassReader.java:206)
at proguard.classfile.io.ProgramClassReader.visitProgramClass(ProgramClassReader.java:149)
at proguard.classfile.ProgramClass.accept(ProgramClass.java:358)
at proguard.io.ClassReader.read(ClassReader.java:91)
... 77 more
तो क्या प्रोगार्ड अभी भी कक्षाओं और जारों को ओबफुसेशन छोड़ने के साथ पढ़ता है? मैं एंड्रॉइड ऐप बनाने के लिए प्रोगार्ड का उपयोग करने के लिए नया हूं।
अद्यतन # 1
-dontpreverify
-dontoptimize
-dontshrink
-keep class com.na.** { *; }
-keep interface com.na.** { *; }
-keep class org.json.** { *; }
-keep interface org.json.** { *; }
हाँ, कहानियो क्या ProGuard करता है का केवल एक भाग है - यह करने के लिए शेष भागों करना जारी रखेंगे अप्रयुक्त कोड इत्यादि को हटाने जैसे लाइब्रेरी –
क्या प्रोजेवार्ड लाइब्रेरी जार (na.jar) को पढ़ने/प्रसंस्करण छोड़ना संभव है? – Nicky
आप इन प्रकारों/पैकेजों को अनुकूलित करने के लिए इन्हें निर्दिष्ट करने के लिए पहले से regex निर्दिष्ट करें: का उपयोग करके फ़िल्टर जोड़ने के द्वारा ऑप्टिमाइज़ेशन अक्षम कर सकते हैं। मुझे लगता है कि यह सूची आपकी "रखी" सूची के समान होगी। –