प्रोजेवार्ड एक अमूर्त वर्ग में अप्रयुक्त विधियों को अप्रयुक्त के रूप में हटा रहा है, भले ही वे मूल वर्ग में उपयोग किए जाते हैं। यहाँ एक संदर्भ व्यवहार दिखाप्रोगुअर्ड अमूर्त वर्ग में अप्रयुक्त विधियों को अप्रयुक्त
public abstract class Animal {
Animal() {
born();
}
abstract void born();
}
public abstract class Human extends Animal {
@Override
void born() {
System.out.println("Human is born.");
}
}
गुण रखने के कार्यान्वयन है परिभाषित कर रहे हैं के रूप में:
-keep public class test.Human {
public *;
}
Proguard अप्रयुक्त के रूप में मानव कक्षा में अधिरोहित born()
तरीकों निकाल देता है, भले ही यह निर्माता से प्रयोग किया जाता है पशु वर्ग के। जिसके परिणामस्वरूप मैपिंग फ़ाइल
test.Animal -> test.a:
void born() -> a
test.Human -> test.Human:
यह समस्या है मौजूद नहीं है, तो वर्ग Human
सार नहीं है। यदि वर्ग Human
गैर सार है, जिसके परिणामस्वरूप मैपिंग फ़ाइल
test.Animal -> test.a:
void born() -> a
test.Human -> test.Human:
void born() -> a
है हम देख सकते हैं, विधि born()
इस मामले में बनाए रखा है।
क्या यह प्रोजेगार्ड में एक बग है? या क्या कोई अनुकूलन सेटिंग है जो वांछित व्यवहार प्रदान कर सकती है?
मैं एंड्रॉइड स्टूडियो के साथ प्रोगार्ड का उपयोग कर रहा हूं।
क्या कोई ठोस वर्ग है जो मानव को फैलाता है? यदि ऐसा नहीं है, तो यह हो सकता है कि यह घट रहा है कि 'मानव.बर्न' को कभी भी निष्पादित नहीं किया जा सकता है। –
@Devon_C_Miller लाइब्रेरी का हिस्सा होने के बाद से कोई ठोस वर्ग नहीं है। वही समस्या मौजूद है यदि रचनाकारों को किसी अन्य विधि द्वारा प्रतिस्थापित किया जाता है जिसे मैपिंग में रखा जाता है और दिखाया जाता है। – adwiv