2015-06-12 9 views
6

मैं एक एंड्रॉइड लाइब्रेरी विकसित कर रहा हूं। लाइब्रेरी में कुछ निर्भरता है। मुझे यकीन नहीं है कि अगर डेवलपर मेरी लाइब्रेरी में पहले से मौजूद अन्य निर्भरताओं के साथ मेरी लाइब्रेरी का उपयोग करेगा तो क्या होगा। मैंने इसके बारे में गुगलने की कोशिश की लेकिन कुछ भी नहीं मिला।एंड्रॉइड: पुस्तकालय निर्भरता संघर्ष कैसे हल करें

उदाहरण के लिए मैं अपनी लाइब्रेरी में संस्करण एक्स की वॉली लाइब्रेरी का उपयोग कर रहा हूं और इसे ग्रेडल पैकेज के रूप में भेज रहा हूं। और डेवलपर मेरी लाइब्रेरी के साथ संस्करण वाई के साथ वॉली आयात करता है।

लाइब्रेरी (मॉड्यूल, जार या पैकेज) में निर्भरता को शामिल करने का सबसे अच्छा तरीका क्या होना चाहिए ताकि संघर्ष की स्थिति को कम किया जा सके।

+0

अच्छा नहीं होगा। जैसा कि है, हम इस प्रश्न का उत्तर देने के लिए हमारे सर्वोत्तम एवेन्यू के रूप में एसओ के साथ छोड़ दिया गया है। हालांकि यह विशिष्ट नहीं है, यह _is_ ऐसा कुछ है जो सभी एंड्रॉइड प्रोग्रामर को अंततः सौदा करना होगा। और एक सामान्य उत्तर हजारों विशिष्ट लोगों की तुलना में अधिक सहायक होगा। –

उत्तर

0

आप अन्य libs को exlude करने के लिए उपयोगकर्ता निर्दिष्ट करेंगे। मेरी Gradle

compile('com.mobprofs:retrofit-simplexmlconverter:1.1') { 
    exclude module: 'stax' 
    exclude module: 'stax-api' 
    exclude module: 'xpp3' 
} 

सामान्य उपयोगकर्ता में से उदाहरण अगर संघर्ष करना होगा और वह पता चल जाएगा कैसे Gradle काम करता है वह eclude libs

+0

इन मॉड्यूल को आयातित लाइब्रेरी से बाहर रखा जाएगा? या उपयोगकर्ता परियोजना? –

+0

https://docs.gradle.org/current/userguide/dependency_management.html -> 50.4.7 पर जाएं। ट्रांजिटिव निर्भरताओं को छोड़कर –

+0

क्या आपने यहां एक नजर डाली है http://stackoverflow.com/questions/16601299/how-to-create-a-library-project-in-android-studio-and-an-plication-project-tha और यहां http://stackoverflow.com/questions/16718026/how-to-build-an-android-library-with-android-studio-and-gradle? –

2

दो विकल्प

  1. संभव तरीके से जोड़ने के लिए सक्षम हो जाएगा उनमें आपकी निर्भरताओं की निर्भरताओं को शामिल करने के लिए एक वसा/उबर/शेयर जार बनाना है (इसके लिए ग्रैडल प्लगइन्स हैं)। One-Jar का उपयोग कर जार के अंदर जार लोड करने के लिए कस्टम क्लासलोडर का उपयोग करें। या Jar Jar Links का उपयोग करने के लिए।
  2. दूसरा विकल्प specificaly exclude transistive dependencies कर रहा है: अगर वहाँ प्रलेखन है कि इस सवाल का जवाब थे

    compile('X') { 
        exclude module: 'Y' 
    } 
    
संबंधित मुद्दे