नहीं रखेंगे मैं एक जावा पुस्तकालय के रूप में वितरित एक पुस्तकालय पर काम कर रहा हूं, और मैं इस तरह से प्रोजेगार्ड चला रहा हूं ताकि केवल आवश्यक इंटरफेस को उजागर किया जा सके। मेरे पास एक सदस्य वर्ग चर के साथ एक विन्यास वर्ग है और कुछ enum परिभाषित करता है। मेरी प्रोजेवार्ड स्क्रिप्ट सदस्य चर को ठीक से संरक्षित करती है, हालांकि, enum परिभाषाओं को obfuscated किया जा रहा है। मैंने इन आंतरिक रूप से परिभाषित और सार्वजनिक enums को बनाए रखने के लिए प्रोजेवार्ड को मजबूर करने के बारे में सोचने की हर चीज की कोशिश की है, लेकिन मैं इसे काम नहीं कर सकता।प्रोगार्ड क्लास सदस्य के enums
अभी मैं उपयोग कर रहा हूँ:
-keep public class com.stuff.MyConfigObject {
public *;
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
अगर मैं कोशिश:
-keep public enum com.stuff.MyConfigObject.MyEnum
मैं एक अस्पष्ट त्रुटि मिलती है: "ध्यान दें: विन्यास अज्ञात वर्ग 'com.stuff को संदर्भित करता है .MyConfigObject.MyEnum ''
सहायता के लिए धन्यवाद!
धन्यवाद कि मुझे बहुत करीब मिल गया है! हालांकि, परिणामस्वरूप .jar थोड़ा अजीब है। Enums के लिए कक्षा फाइलें हैं, और सबकुछ ठीक दिखता है, लेकिन ग्रहण में, किसी भी सदस्य का उपयोग नहीं किया जा सकता है। कोड पूर्णता उन्हें सही ढंग से दिखाती है, लेकिन संकलन विफल रहता है "MyEnum को हल नहीं किया जा सकता है या कोई फ़ील्ड नहीं है।" मैं प्रोगार्ड 4.4 का उपयोग कर रहा हूँ। – Jesse
मैंने पाया कि क्या आप '-keepAttributes **' जोड़ते हैं, यह काम करेगा। सुनिश्चित नहीं है कि कौन सी विशेष विशेषताएं रखी जानी चाहिए, लेकिन [प्रोगार्ड संदर्भ] (http://proguard.sourceforge.net/manual/usage.html#keepattributes) के साथ और कुछ प्रयोग मैं शर्त लगाता हूं कि आप इसे समझ सकते हैं। –
धन्यवाद @ केविन के, आप एक जीवन बचतकर्ता हैं। एक जादू की तरह काम करता है! – Jesse