2015-01-12 9 views
9

मेरे वर्तमान ऐप में मेरे पास 2 बिल्ड हैं, उन्हें build 1 और build 2 पर कॉल करने दें। मैं समझता हूँ कि दो जायके आम कोड/संसाधनों को साझा कर सकते हैं कि लेकिन यह भी अलग-अलग कोड और संसाधनों हो सकता है जैसे कि निम्न:एंड्रॉइड स्टूडियो - अन्य स्वाद के साथ साझा कोड स्वाद कर सकते हैं?

Two Flavours Diargram

क्या मुझे क्या करना कोशिश कर रहा हूँ इतना है कि यह एक और के साथ कुछ कोड के शेयरों build 2 का विस्तार है निर्माण (उदाहरण के लिए build 3)। या तो निम्न जैसे कुछ कोड साझा करने:

Two Flavours Sharing Code

यह build2 किया जाएगा और कुछ कोड/संसाधनों को साझा करते हुए भी उनके अपने अद्वितीय कोड सेट है की क्षमता होने 3 का निर्माण। या:

Build 3 Extending Build 2

यहाँ, build 3 प्रदान कर रहा है build 2 ताकि सभी कोड और संसाधनों build 2 से दोनों में उपलब्ध हैं बनाता है लेकिन build 3 भी अपनी अनूठी कोड/संसाधन हो सकता है।

मुझे लगता है कि build 2 विस्तारित करना सबसे अच्छा तरीका है (यदि यह संभव है) लेकिन कोई सलाह या मुझे सही दिशा में इंगित करने की बहुत सराहना की जाएगी। मैंने बिना किसी लाभ के इंटरनेट पर 6 घंटे बिताए हैं।

उत्तर

7

इसके लिए कोई अच्छा समर्थन नहीं है। यदि आप वास्तव में ऐसा करना चाहते हैं तो आप अलग-अलग स्वादों को फ़ोल्डरों को प्रभावी रूप से साझा करने की कोशिश करने के लिए सिम्लिंक के साथ कुछ हैकर खोज सकते हैं, लेकिन इससे स्रोत नियंत्रण के साथ चीजें थोड़ी सी चीज बन जाएंगी, और मुझे यकीन नहीं है कि इससे सूक्ष्म समस्याएं नहीं आतीं निर्माण में

मैं आपको बिल्ड सिस्टम में बहुत सारी चालबाजी करने की कोशिश न करने के लिए प्रोत्साहित करता हूं, क्योंकि लंबे समय तक यह आपके ऐप को लिखने और बनाए रखने में कठोर बना देगा, खासकर जब से आईडीई में अच्छी सुविधाएं नहीं हैं उत्पाद स्वादों में कोड से निपटने के लिए (उदाहरण के लिए यदि आप कोड को दोबारा प्रतिक्रिया देते हैं, तो एक गैर-सक्रिय उत्पाद स्वाद में रिफैक्टरिंग लागू करने का कोई तरीका नहीं है; आप केवल एक समय में ही काम कर सकते हैं)।

एक बेहतर दृष्टिकोण एक Android लाइब्रेरी मॉड्यूल उन जायके के लिए एक निर्भरता है कि लेकिन बिल्ड 1 स्वाद के लिए नहीं में बिल्ड 2 और बिल्ड 3 और इसे बाहर निकालने के लिए सामान आम है कि लेने के लिए होगा। विभिन्न उत्पाद स्वादों में विभिन्न निर्भरता हो सकती है, और यह तंत्र समर्थित है और अच्छी तरह से काम करता है।

+0

इसके लिए धन्यवाद। मैं अभी इसे छोड़ने जा रहा हूं। मैं वास्तव में एक हैकरी तरीका नहीं करना चाहता जो कोडबेस को जटिल बनायेगा। त्वरित प्रतिक्रिया और उत्तर के लिए धन्यवाद! –

+0

आप इस स्रोत में 'स्रोतसेट्स' का उपयोग करने का प्रयास कर सकते हैं (http://stackoverflow.com/questions/20974524/with-two-res-directories-per-build-variant-gradle-stopped-tracking-changes-in -r) –

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