2013-10-04 20 views
7

प्रक्रिया करता है मैं कुछ अस्पष्ट प्रोजेवार्ड व्यवहार देखता हूं।क्यों प्रोजेगार्ड AndroidManifest.xml

AFAIK proguard एंड्रॉइड मेनिफेस्ट पर ध्यान नहीं देता है। इसके अलावा, मेरे proguard.cfg में मुझे ब्रॉडकास्ट रिसीवर से संबंधित वर्गों का कोई जिक्र नहीं है। तो मुझे लगता है कि उनको अलग किया जाना चाहिए।

# view AndroidManifest.xml #generated:784 
-keep class com.fiksu.asotracking.InstallTracking { <init>(...); } 

और उस वर्ग (BroadcastReceiver की descendand) छीन नहीं प्राप्त करता है:

हालांकि मैं कुछ bin/proguard.txt में अजीब देखते हैं। कारण कुछ भी सार्थक कहना नहीं है मुझे करने के लिए:

[proguard] com.fiksu.asotracking.InstallTracking 
[proguard] is kept by a directive in the configuration. 

वर्ग प्रकट में उल्लेख नहीं किया जाता है, यह छीन हो जाता है।

जानना अच्छा होगा क्यों।

+0

क्या आपने '/tools/proguard/proguard-android.txt' की जांच की है। उसमें आम तौर पर घोषणाएं होती हैं जो प्रोगुआर्ड को आपके आवेदन को पूरी तरह से मारने से रोकती हैं। – Jens

+0

हाँ, मेरी समझ में इसमें ब्रॉडकास्ट रिसीवर या मैनिफेस्ट से संबंधित कुछ भी शामिल नहीं है, या मैं इसे गलत तरीके से समझता हूं। – lstipakov

+0

एसडीके परिभाषा में आमतौर पर कुछ ऐसा होता है: '-पाप सार्वजनिक वर्ग * एंड्रॉइड.content.BroadcastReceiver' बढ़ाता है जो रिसीवर को उलझने से रोकता है। – Jens

उत्तर

9

बिल्ड प्रक्रिया और अन्य xml फ़ाइलों के आधार पर कॉन्फ़िगरेशन फ़ाइल bin/proguard.txt स्वचालित रूप से कॉन्फ़िगरेशन फ़ाइल बनाने के लिए उपकरण चलाती है। निर्माण प्रक्रिया तब कॉन्फ़िगरेशन फ़ाइल को ProGuard में पास करती है। तो ProGuard खुद वास्तव में AndroidManifest.xml पर विचार नहीं करता है, लेकिन एप + प्रोगार्ड करते हैं।

+0

धन्यवाद, एरिक! क्या इसका यह भी अर्थ है कि हमें प्रसारण रिसीवर, सेवाओं आदि के लिए "रख-रखाव" निर्देश मैन्युअल रूप से जोड़ने के लिए अब और आवश्यकता नहीं है? – lstipakov

+0

@Stipa यह सही है। एसडीके के अंदर डिफ़ॉल्ट कॉन्फ़िगरेशन को सभी सामान्य सेटिंग्स प्रदान करनी चाहिए, और एपेट को सभी एप्लिकेशन-विशिष्ट कॉन्फ़िगरेशन (एप्लिकेशन-विशिष्ट प्रतिबिंब को छोड़कर) बनाना चाहिए। –

संबंधित मुद्दे