2013-04-17 13 views
6

मेरे पास कई अनुप्रयोग परियोजनाएं हैं जो एक सामान्य पुस्तकालय परियोजना का उपयोग करती हैं। मैंने हाल ही में प्रत्येक एप्लिकेशन प्रोजेक्ट के AndroidManifest.xml से लाइब्रेरी के मेनिफेस्ट में कुछ सामान्य गतिविधि घोषणाओं को स्थानांतरित करने का प्रयास किया है, और manifestmerger.enabled=trueproject.properties में सक्षम मैनिफेस्ट विलय कर दिया है।प्रोग्रार्ड obfuscates एक विलय पुस्तकालय में गतिविधि नाम प्रकट

सबकुछ डीबग बिल्ड में ठीक काम करता है, लेकिन रिलीज बिल्ड (प्रोगार्ड द्वारा obfuscated) ActivityNotFoundException के साथ विफल रहता है। ऐसा इसलिए है क्योंकि प्रोगार्ड लाइब्रेरी मेनिफेस्ट में घोषित गतिविधियों के नामों को खराब कर रहा है, लेकिन एप्लिकेशन मेनिफेस्ट में नहीं।

मैंने एप्लिकेशन प्रोजेक्ट के लिए विलय bin/AndroidManifest.xml फ़ाइल की जांच की है, और यह सही ढंग से गतिविधि नाम सूचीबद्ध है।

क्या कोई व्यक्ति कामकाज का सुझाव दे सकता है?

उत्तर

2

मानक चींटी निर्माण प्रक्रिया प्रोगूर्ड कॉन्फ़िगरेशन (bin/proguard.txt) बनाने के लिए एपेट टूल को आमंत्रित करती है जो आवश्यक कक्षाओं को संरक्षित करती है (उदाहरण के लिए सभी गतिविधियां जिनका उपयोग किया जाता है)। जिसके परिणामस्वरूप आवेदन अभी भी अन्य वर्गों याद आ रही है, तो

-keep public class * extends android.app.Activity 
-keep public class * extends android.app.Application 
-keep public class * extends android.app.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 

: अगर वह अपनी परियोजना संरचना (शायद एक बग या असमर्थित मामले) के लिए काम नहीं करता है, तो आप अपने ProGuard-project.txt में कक्षाएं खुद की रक्षा कर सकते , आप ProGuard मैन्युअल> उदाहरण>A complete Android application में अधिक मैन्युअल कॉन्फ़िगरेशन पा सकते हैं।

+0

@ एरिक, मुझे लगता है कि यह बिल्ड सिस्टम (https://code.google.com/p/android/issues/detail?id=36077) में एक बग है। क्या आपके पास कोई कामकाज या सुझाव है? – user802421

+0

@ user802421 स्पष्ट रूप से उपर्युक्त लाइनों को जोड़ना इसके आसपास काम करना चाहिए। –

+0

@ एरिक, स्पष्ट रूप से अभी भी काम नहीं किया है। एपीके परियोजना के मैनिफेस्ट में केवल कक्षा परिभाषा रखा गया था। अभी मुझे विलय बंद करने और lib प्रोजेक्ट से सबकुछ कॉपी करने की आवश्यकता है। :( – user802421

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