इनलाइन नहीं करता है, मैं नवीनतम एंड्रॉइड एसडीके (4.1) का उपयोग कर रहा हूं और मैंने प्रोगार्ड सक्षम के साथ एक हस्ताक्षरित जार निर्यात करने का प्रयास किया। हालांकि, अनुकूलित एपीके को अपनाने के बाद, मैंने देखा कि जिन विधियों को मैं रेखांकित करने की अपेक्षा करता हूं वे नहीं थे।एंड्रॉइड प्रोगार्ड
मुझे पता है कि प्रोगुआर्ड भाग गया क्योंकि कोड सही ढंग से खराब हो गया था। तो यह पुष्टि करने के लिए, मैं अपने गतिविधि के लिए इस विधि कहा:
private void testInlining()
{
mConfig = null;
}
यह निजी विधि मेरी गतिविधि में केवल एक बार कहा जाता है, और क्योंकि यह निजी है, यह अनुकूलक है कि यह केवल कहा जाता है करने के लिए बहुत स्पष्ट होना चाहिए एक बार और यह रेखांकित किया जाना चाहिए।
प्रलेखन का कहना है कि सभी अनुकूलन डिफ़ॉल्ट रूप से सक्षम होते हैं, और प्रोगुआर्ड "इनलाइन विधियों को छोटा या केवल एक बार बुलाया जाता है"।
क्या प्रोलुआर्ड को इनलाइनिंग सक्षम करने के लिए मुझे एक विशिष्ट ध्वज देना चाहिए?
संपादित
मेरे ProGuard विन्यास फाइल शामिल
-optimizationpasses 5
-allowaccessmodification
-overloadaggressively
-repackageclasses ''
-dontskipnonpubliclibraryclasses
संपादित
इस्तेमाल करने के बादमैं कारण है कि विधि inlined नहीं है मिलती है:
[proguard] com.templatecompany.templateappname.EntryPointActivity: void testInlining() (20:21)
[proguard] is invoked by com.templatecompany.templateappname.EntryPointActivity: com.td.media.ivConnection.IvConfig getIvConfig() (14:15)
[proguard] implements com.td.widget.MainActivity: com.td.media.ivConnection.IvConfig getIvConfig()
[proguard] is invoked by com.td.widget.MainActivity: void onCreate(android.os.Bundle) (140:175)
[proguard] implements android.app.Activity: void onCreate(android.os.Bundle)
[proguard] is a library method.
लेकिन मैं यह देखने के लिए यकीन नहीं है कि कैसे इस तथ्य है कि विधि testInlining
विधि getIvConfig
जो किसी अन्य विधि द्वारा इस्तेमाल किया बदले में है में प्रयोग किया जाता है getIvConfig
में testInlining
पर इनलाइनिंग को रोकता है।
क्या आपने यह कोशिश की है? -optimizationpasses 5 अधिक http://stackoverflow.com/questions/5068251/android-what-are-the-recommended-configurations-for-proguard?rq=1 – user1154664
पर आप वास्तव में ProGuard प्राप्त करने में सक्षम थे किसी भी विधि कॉल इनलाइन बनाने के लिए? प्रोगार्ड-एंड्रॉइड-ऑप्टिमाइज़.txt का उपयोग करना और एक साधारण निजी विधि लिखना जो एक int देता है, मैं इसे काम नहीं देख पा रहा था: http://paste.ofcode.org/hbpzPe4EdAnDGnNqNTE7c3 – brAzzi64