बनाते समय निर्भरताओं को कैसे संभाला जाए मैं वर्तमान में एक एसडीके पर काम कर रहा हूं जो एंड्रॉइड & आईओएस मंच दोनों पर उपलब्ध है।एंड्रॉइड और आईओएस: एसडीके
एंड्रॉइड के लिए, हम अपनी ग्रैडल फ़ाइल में निर्भरता सूचीबद्ध करते हैं और एसडीके प्रदान करने के लिए मेवेन का उपयोग करते हैं (इसलिए हमारी निर्भरता .pom फ़ाइल में सूचीबद्ध हैं)।
आईओएस के लिए, हम निर्भरताओं को संभालने के लिए कोकोपोड का उपयोग करते हैं।
समस्याहै निम्नलिखित: * हमारे एसडीके संस्करण में एक निर्भरता का उपयोग एक्स * हमारे ग्राहक एक ही निर्भरता लेकिन संस्करण में वाई * एक अन्य ग्राहक भी संस्करण जेड
में ठीक उसी निर्भरता का उपयोग कर सकते का उपयोग कर सकते में से एकतो, यह हमारी एसडीके संभवतः हमारे ग्राहक से एक पर तोड़ा जा रहा है की ओर जाता है (यदि नहीं दोनों) क्योंकि हम सुनिश्चित करें कि यह निर्भरता एक्स के साथ काम करता है, लेकिन नहीं Y और जेड
अभी के लिए, विरासत कोड है इस समस्या के कारण पुस्तकालयों के बस आयातित स्रोत कोड और इसे नामित किया गया, जैसे कि यह अनुकरण करता है कि हम एक ही पुस्तकालय का उपयोग नहीं करते हैं।
लेकिन मेरी राय में, यह एक उपयुक्त समाधान नहीं है: हमारे पास नवीनतम सुधार नहीं हैं, यह अद्यतन करने के लिए दर्दनाक है, क्लाइंट के बजाय पुस्तकालय में दो बार पुस्तकालय है।
तो, अभी के लिए, मैं एक संभावित अच्छे समाधान के बारे में सोचने की कोशिश कर रहा हूं, लेकिन मुझे Google पर जो चाहिए वह नहीं मिल सका (शायद मैं सही कीवर्ड का उपयोग नहीं कर रहा हूं: /)।
मैं जो सोच रहा था वह प्रत्येक निर्भरता के लिए संस्करणों की एक श्रृंखला के लिए समर्थन प्रदान करना था। थोड़ा सा "अगर यह विधि यहां है, इसे निष्पादित करें, अन्यथा, पिछले संस्करण की उस विधि का उपयोग करें" (जैसे चयनकर्ता प्रतिक्रिया आईओएस पर)। फिर, ग्राहक निर्भरता के किसी भी संस्करण को उस स्थिति में उपयोग करने में सक्षम होना चाहिए जो यह समर्थित सीमा में है।
हालांकि, मुझे नहीं पता कि यह सही तरीका है या नहीं? क्या कोई अन्य समाधान है?
1.-यदि आप Maven के साथ अपने पुस्तकालय का निर्माण, तो आप उपयोग कर सकते हैं:
धन्यवाद :)
मुझे नहीं लगता कि आप जो हासिल करने की कोशिश कर रहे हैं वह संभव है। भले ही आप अपना 'कोड' संस्करण को स्वतंत्र मानते हैं, फिर भी आपकी लाइब्रेरी को अभी भी उल्लेख करना होगा कि यह अन्य पुस्तकालयों पर निर्भर करता है। यदि आप एक संस्करण निर्दिष्ट नहीं करते हैं, तो नवीनतम संस्करण माना जाएगा (कम से कम कोकोपोड में)। आप निर्भरताओं के तहत एक ही पुस्तकालय के कई संस्करणों का उल्लेख नहीं कर सकते हैं। जब तक संस्करणों को एक साथ उपयोग करने के लिए स्पष्ट रूप से बनाया नहीं जाता है। – lukya
हालांकि आप क्या कर सकते हैं, आपके ** बेस एसडीके ** के कई संस्करण बनाते हैं, केवल 'निर्भरता' संस्करण होने के अंतर में। जैसा कि आपने कहा था कि आप निर्भरता के सभी संस्करणों का समर्थन करने के लिए अपना ** बेस कोड ** बदल सकते हैं जिसके लिए आप अलग संस्करण बनाने की योजना बना रहे हैं। फिर, आपके एसडीके के विभिन्न संस्करणों के बीच एकमात्र अंतर निर्भरता के विशिष्ट संस्करण का उल्लेख करते हुए पोम/पॉड फ़ाइल होगा। आपको अपने क्लाइंट के लिए अपने एसडीके का सही संस्करण चुनने के लिए निर्भरता संस्करणों के सभी संयोजनों का एक मैट्रिक्स बनाए रखना होगा। – lukya
उपर्युक्त दृष्टिकोण के साथ, क्लाइंट कोड में अन्य निर्भरता संस्करणों का समर्थन करने वाले संस्करण को अभी भी ** आपके ** एसडीके के एक संस्करण का उपयोग नहीं कर सकता है। चूंकि आपका एसडीके मैवेन/कोकोपोड्स के माध्यम से जोड़ा जाना है, इसलिए आपके एसडीके का बदलना संस्करण क्लाइंट के लिए निर्भरता कॉन्फ़िगरेशन फ़ाइल (पोम/पॉड) में केवल एक संख्या है। यह आदर्श नहीं है लेकिन मुझे लगता है कि यह करीब है। – lukya