मैं अपनी प्रोजेक्ट में शामिल लाइब्रेरी के साथ कुछ परेशानी में भाग रहा हूं: शुरुआत में यह केवल एक विरोधाभासी निर्भरता मुद्दा था जिसे मैंने छोड़कर हल किया support-v4
जो आमतौर पर साझा किया गया मॉड्यूल है।ग्रैडल पुस्तकालय कक्षाओं के अंदर शामिल जेएआर फ़ाइल के लिए संदर्भ को शामिल या जोड़ना .jar
समस्या यह है कि lbsLib-release
में से एक डेवलपर निर्माण से पहले रूट प्रोजेक्ट के अंदर एक सादे .jar
फ़ाइल के साथ बनाया गया प्रतीत होता है।
./gradlew app:dependencies
चलाकर मैंने सत्यापित किया कि बिल्ड ग्राफ़ में निर्भरता का संदर्भ नहीं दिया गया है।
और मैं इस support-v4
classes.jar
पर स्थित में एम्बेड पाया: app/build/intermedites/exploded-aar/MyQaaAndroid/lbsLib-release/unspecified/classes.jar/
के रूप में आप नीचे चित्र पर देख सकते हैं:
मैं परियोजना अपने आप पुनर्निर्माण नहीं कर सकता, क्योंकि यह नहीं है एक खुली सोर्स लिब, इसलिए दो समस्याएं हैं:
यदि मैंजोड़ता हूं
build.gradle
परmultiple dex file
त्रुटि समय पर फेंक दिया गया है ताकि लाइब्रेरी को दो बार संदर्भित किया जा सके।UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/app/BackStackState; at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596) at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554) at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535) at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171) at com.android.dx.merge.DexMerger.merge(DexMerger.java:189) at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303) at com.android.dx.command.dexer.Main.run(Main.java:246) at com.android.dx.command.dexer.Main.main(Main.java:215) at com.android.dx.command.Main.main(Main.java:106)
`
अगर मैं सभी libs जो
support-v4
की आवश्यकता होती है यह आवेदन कार्यावधि में एक लापता निर्भरता त्रुटि फेंकता को हटा दें।
तो मैं अगर यह संभव है निर्माण से इस .jar
फ़ाइल को बाहर करने या दूसरों libs बनाने के लिए जानना चाहते हैं lbsLib-release
एम्बेडेड support-v4
.jar
पर निर्भर करता है। जड़ build.gradle
पर resolutionStrategy
(API reference) का उपयोग करने
compile (project(':lbsLib-release')) {
exclude module: 'support-v4'
}
compile ('com.sothree.slidinguppanel:library:2.0.4'){
exclude module: 'support-v4'
}
compile('com.google.android.gms:play-services:6.5.87') {
exclude module: 'support-v4'
}
आप lbsLib रिलीज एक 'संकलन project' निर्देश के माध्यम से शामिल कर रहे हैं, तो आप के लिए स्रोत कोड की जरूरत नहीं है यह? –
नहीं, यह एक * .aar फ़ाइल –
है जो 'मॉड्यूल' को सबमिशन के build.gradle में बहिष्कृत करने का प्रयास करें, जहां आप .aar सहित हैं, और शीर्ष-स्तर में नहीं, जहां आप सबमिशन शामिल कर रहे हैं। –