2014-11-14 6 views
5

मेरे Gradle परियोजना में शामिल है क्योंकि यह मुख्य परियोजना में प्रयोग किया जाता है एक मुख्य मॉड्यूल और एक पुस्तकालयGradle ProGuard के बाद भीतरी वर्ग का प्रतीक नहीं मिल सकता है

एक पुस्तकालय के वर्ग एक enum शामिल, मैं ProGuard कहानियो से बाहर रखा गया ।

Gradle साथ निर्माण पर विफल रहता है "त्रुटि। प्रतीक चर MyEnum नहीं मिल सकता है" और एक ही त्रुटि के रूप में अच्छी तरह से एक और इंटरफेस है, जो भी एक वर्ग

मैं के classes.jar फ़ाइल decompiled अंदर घोषित किया जाता है के लिए चला जाता है मेरी लाइब्रेरी, जिसे बिल्ड और एनम पर उत्पन्न किया गया था, बिल्कुल वही जगह है जहां यह "क्लास नहीं मिला" MyClass $ MyEnum के रूप में है। संकलन के बाद "MyClass" वर्ग अभी भी इसके सही स्थान पर मौजूद है।

इस

ProGuard कोड मेरी enum के लिए इस्तेमाल किया मैं है:

-keep,allowoptimization enum com.mypackage.MyClass$MyEnum { 
    public static **[] values(); 
    public static ** valueOf(java.lang.String); 
    **[] $VALUES; 
    public *; 
} 

मैं जब ProGuard का उपयोग करके किसी भी कोड

पोस्ट करने के लिए वहाँ भीतरी वर्गों के साथ किसी विशेष चाल है, की अनुमति नहीं ??

उत्तर

7

testet नहीं के रूप में अब मैं अपने भीतर के वर्ग निकाला है, लेकिन यह काम करना चाहिए

-keep class my.outer.Class$MyInnerClass 
-keepattributes InnerClasses 
संबंधित मुद्दे