2011-09-07 18 views
17

मेरा आवेदन विकसित करना जारी रखने और को वास्तविक फोन पर परीक्षण करने के दौरान, मुझे प्रदर्शन उद्देश्यों के लिए उसी फोन पर रिलीज़ संस्करण होना चाहिए (रिलीज़ संस्करण अधिक प्रतिक्रियाशील है, नो-लॉग के लिए धन्यवाद) ।एक ही डिवाइस पर डीबग और रिलीज एपीके दोनों कैसे हैं?

समस्या यह है कि एंड्रॉइड में एक ही डिवाइस पर दो अनुप्रयोगों को सह-अस्तित्व बनाने का एकमात्र तरीका अलग-अलग पैकेज नाम हैं।

लेकिन पैकेज के नाम की आवश्यकता होती है फिर से फैक्टरिंग और मैनुअल फिक्स प्रचार के बहुत सारे ... का उल्लेख नहीं है कि इस संस्करण नियंत्रण confuses ...

आदर्श रूप में, ग्रहण + एडीटी एक आपरिवर्तक चर कि स्वचालित रूप से उत्पन्न होगा जोड़कर अनुमति होगी डीबग/रिलीज के लिए एक अलग पैकेज नाम और ऐसे सह-अस्तित्व की अनुमति देगा, लेकिन मुझे ऐसा कोई तंत्र नहीं मिला जो ऐसा करने की अनुमति देता है।

क्या आप इसे हल करने के किसी भी तरीके से जानते हैं?

क्रिएटिव समाधान और विचारों का स्वागत है।

उत्तर

0

आप this techniqueant, Jenkins और शायद अन्य टूल को @LAS_VEGAS द्वारा सुझाए गए पैकेज नामों को स्वचालित करने के लिए प्रयास कर सकते हैं।

हालांकि आपने जो भी पूछा है, this cool code snippet आपके कोड को डिबग या रिलीज़ करने के लिए रनटाइम पर खोजने में आपकी सहायता कर सकता है।

एक अन्य दिलचस्प प्रयास this thread में पाया जा सकता है। मुझे यकीन नहीं है कि अगर यह एंड्रॉइड पर काम करता है।

2

मुझे पता है कि एकमात्र तरीका है कि आप अपने अनुप्रयोगों मेनिफेस्ट फ़ाइल में पैकेज नाम बदलना चाहते हैं। ग्रहण आपके लिए सभी कोड नामकरण को संभालना चाहिए।

+0

वाह! वह लगभग काम किया। मैंने मैनिफेस्ट फ़ाइल में पैकेज नाम के अंत में 'डी' लगाया, परियोजना को पुनर्निर्माण के लिए साफ कर दिया और ग्रहण ने शिकायत नहीं की। मैं खुशी से इसे चलाने के लिए आगे बढ़ गया लेकिन फिर यह "बल बंद"। यह पता चला है कि मेरा एप्लिकेशन प्रतिबिंब (वर्ग कारखाना) का उपयोग करता है और एंड्रॉइड को मैनिफेस्ट के पैकेज नाम और .java पैकेज नाम के बीच विसंगति पसंद नहीं है। बहुत करीब आने के लिए +1। – an00b

+0

यदि आपके रिलीज बिल्ड में प्रोग्रार्ड ओबफ्यूशन सक्रिय है, और यदि आपने proguard.cfg पर कुछ कस्टम _rules_ जोड़े हैं, तो उनमें पैकेज नाम भी हो सकता है।इसके अलावा यदि आपने कस्टम व्यू विजेट बनाए हैं और उन्हें कुछ एक्सएमएल लेआउट में जोड़ा है, तो उन्हें पैकेज के साथ भी नामित किया गया है। – superjos

2

क्या आप अपना सभी कोड Library Project में डाल सकते हैं और फिर केवल दो सामान्य परियोजनाएं, हैं जिनमें अलग-अलग पैकेज नाम हैं और दोनों में लाइब्रेरी प्रोजेक्ट शामिल है?

यह आपके सभी कोड को एक ही स्थान पर रखना चाहिए। सामान्य परियोजनाओं की संभावना केवल एक वैध मैनिफेस्ट फ़ाइल की आवश्यकता होगी जो लाइब्रेरी प्रोजेक्ट में गतिविधियों को इंगित करे।

+0

लाइब्रेरी प्रोजेक्ट ने लॉगिंग डीबग भी किया है ... (आईओओ, लाइब्रेरी प्रोजेक्ट को एप्लिकेशन की तरह सशर्त भवन की आवश्यकता है)। यह समाधान मेरे लिए काम नहीं करता है लेकिन रचनात्मक सुझाव के लिए +1 है। – an00b

4

उपयोग एंड्रॉयड स्टूडियो क्योंकि Gradle अपने जीवन बहुत आसान बनाने - बस अधिक जाना लिए hereapplicationIdSuffix

android { 
    ... 
    buildTypes { 
    release {...} 
    debug { 
     applicationIdSuffix '.debug' 
    } 
    } 
} 

का उपयोग करें।

0

एंड्रॉइड स्टूडियो में, उत्पाद फ्लेवर्स का उपयोग करके बिल्ड वेरिएंट जोड़ना जिन्हें आसानी से विभिन्न वातावरण के लिए अनुकूलित किया जा सकता है और एक ही ऐप के कई ऐप वेरिएंट की तरफ से परीक्षण किया जा सकता है। अधिक जानकारी के लिए इस लिंक को देखें - Configuring Gradle