2016-03-19 8 views
8

मेरे एंड्रॉइड प्रोजेक्ट में, मैं एक पुस्तकालय का उपयोग करता हूं जो एक जार के रूप में आता है। मैं बहुत तरह निर्भरता अनुभाग में शामिल हैं:एंड्रॉइड ग्रैडल बिल्ड में, एक जार फ़ाइल से निर्भरताओं को कैसे बाहर निकालना है?

compile ('com.squareup.okhttp:okhttp:2.7.5') 

(okhttp का यह विशेष संस्करण 1.6 Okio पर निर्भर करता है:

dependencies { 
    ... 

    compile files('libs/thethirdpartylibrary.jar') 
    ... 
} 

मैं भी okhttp पुस्तकालय है, जो मैं इस तरह शामिल उपयोग करना चाहते हैं .0।)

समस्या यह है कि थर्डपार्टी जार लाइब्रेरी ओकियो v0.9.0 पर निर्भर करती है और इससे भी बदतर, इसे बंडल करता है।

परिणामस्वरूप, मुझे बिल्ड समय पर एक डीएक्स संघर्ष त्रुटि मिलती है।

मैं जार फ़ाइल से मैन्युअल रूप से ओकियो को हटाकर इसे हल करने में सक्षम था और ऐसा लगता है कि यह काम करता है। लेकिन मैं सोच रहा हूं कि क्या धीरे-धीरे इसे करने का कोई तरीका है।

मेरा प्रश्न: क्या मैं बंडल, ट्रांजिटिव (< - मुझे उम्मीद है कि मैं इस शब्द का सही तरीके से उपयोग कर रहा हूं) ग्रेडलाइन के साथ बिल्ड-टाइम के दौरान एक जार से निर्भरता?

+1

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

+0

वास्तव में, मैं अभी यही कर रहा हूं। मैं बस सोच रहा था कि क्या ग्रेडल के साथ ऐसा करने के लिए एक (सरल) तरीका है, ताकि विक्रेता पुस्तकालय में हर बार मैन्युअल रूप से ऐसा करने की ज़रूरत न हो। – treesAreEverywhere

+1

हाय, क्या आपने इसे हल किया है? क्या आप अपना समाधान साझा कर सकते हैं? –

उत्तर

6

नीचे दी गई रेखाओं का उपयोग करके निर्भरताओं में समूह को बाहर निकालें।

1. configurations { 
     all*.exclude group: 'com.android.support', module: 'support-v4' 
    } 



2.dependencies { 
    compile 'com.android.support:support-v4:13.0.+' 
    compile ("com.xxx:xxx-commons:1.+") { 
     exclude group: 'junit', module: 'junit' 
    } 
} 



    3. configurations { 
     runtime.exclude group: "org.slf4j", module: "slf4j-log4j12" 
    } 

इसे आजमाएं। For more detail

+0

1. काम करता है, लेकिन समस्या यह है कि मैं इसके एक संस्करण को शामिल करना चाहता हूं .. – treesAreEverywhere

+2

2. यह वाक्यविन्यास फ़ाइल-आधारित जार फ़ाइलों (AFAIK ...) – treesAreEverywhere

+0

के साथ काम नहीं करता है 3. मुझे नहीं लगता कि मैं ऐसा करना चाहते हैं क्योंकि मैं वास्तव में पुस्तकालय के एक छंद को शामिल करना चाहता हूं - मैं सिर्फ JAR – treesAreEverywhere

0

इस चर्चा के अनुसार यहां https://groups.google.com/forum/#!topic/adt-dev/g1AiJM7PeVs, आप जो करना चाहते हैं वह संभव नहीं है।

अन्य उत्तरों में सुझाए गए वाक्यविन्यास "सामान्य" मेवेन निर्भरताओं के लिए है।

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