2017-07-13 7 views
5

मेरे एंड्रॉइड प्रोजेक्ट में मैंने दो पुस्तकालयों को जार के रूप में libs फ़ोल्डर में शामिल किया है। और मैं उन्हें नीचे के रूप में निर्माण ग्रैडल में जोड़ता हूं।एपीके एंड्रॉइड में कॉपी की गई डुप्लिकेट फ़ाइलें - क्या इसे विलय किया जा सकता है?

dependencies { 
    compile files('libs/siddhi-core-4.0.0-M13-SNAPSHOT.jar') 
    compile files('libs/siddhi-execution-math-4.0.2-SNAPSHOT.jar') 
} 

उन दो जार फ़ाइलें एक ही नाम ("org.wso2.siddhi.annotation.Extension") के साथ लेकिन अलग अलग सामग्री के साथ एक फ़ाइल है। और परियोजना के लिए दोनों फाइलें महत्वपूर्ण हैं। ही चूंकि यह है नाम Gradle कह निर्माण नहीं होगा

Duplicate files copied in APK 

कैसे मैं एक ही नाम के साथ एक एकल फाइल में उन दो फाइलों विलय कर सकते हैं? उन दो फाइलें कक्षा नामों की सूची वाली टेक्स्ट फाइलें हैं। दो फाइलों में उनके पास दो अलग-अलग सूचियां हैं। इसलिए मैं उन्हें एक ही नाम से एक टेक्स्ट फ़ाइल में एक सूची में विलय करना चाहता हूं।

enter image description here

उत्तर

4

अंत में मुझे जवाब मिला। ऐप बिल्ड ग्रेडल में आप विवादित फ़ाइलों को मर्ज करने के लिए निर्दिष्ट कर सकते हैं।

packagingOptions {   
    merge 'META-INF/annotations/org.wso2.siddhi.annotation.Extension' 
} 
जानकारी के लिए

यहाँ https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.PackagingOptions.html

2

आप उन्हें पहले अनज़िप द्वारा जार से फ़ाइल को बाहर निकालने और वास्तविक फ़ाइल के बजाय कि संकलन कि अनज़िप प्रतिलिपि फ़ाइल के बाद उन फ़ाइलों को बिना जार कॉपी, , इस

task unzipJar(type: Copy) { 
    from zipTree('libs/siddhi-core-4.0.0-M13-SNAPSHOT.jar') 
    into ("$buildDir/libs/siddhi-core-4.0.0-M13-SNAPSHOT") 
    include "**/*.class" 
    exclude "org.wso2.siddhi.annotation.Extension" 
} 

dependencies { 
    compile files('libs/siddhi-execution-math-4.0.2-SNAPSHOT.jar') 
    compile files("$buildDir/libs/siddhi-core-4.0.0-M13-SNAPSHOT") { 
     builtBy "unzipJar" 
    } 
} 
की तरह कर सकते हैं

कृपया इसे जांचें, यहां तक ​​कि मुझे इसका उपयोग करने का मौका नहीं मिला लेकिन इसे काम करना चाहिए।

+1

कोशिश लेकिन यह यह क्या कहा है नहीं है: * मैं इन दोनों फ़ाइलों को रखना या उन्हें एक एकल फाइल में विलय कर सकते हैं * – ToYonos

+1

? आपको दो बार एक ही फाइल की आवश्यकता क्यों है? – Avi

+1

दो फाइलों की सामग्री अलग हैं। इसमें एक्सटेंशन की सूची शामिल है जिसे प्रोग्राम – chamathabeysinghe

0

आप दोनों नामों के समान नाम संकल्प के रूप में नहीं हो सकते हैं। (Org.wso2.siddhi.annotation.Extension)। तो यह काम नहीं करेगा। आइए कुछ बताएं कि आपने दोनों जार को कैसे शामिल किया है, आप उनमें से एक का उपयोग करने के लिए कैसे जा रहे हैं यानी। रनटाइम कक्षा की विशिष्ट पहचान कैसे करेगा क्योंकि दोनों वर्गों में समान नामस्थान और साथ ही नाम भी है।

-1

देखो यह एक

dependencies { 
     compile files('libs/siddhi-execution-math-4.0.2-SNAPSHOT.jar') 
     compile files("$buildDir/libs/siddhi-core-4.0.0-M13-SNAPSHOT") { 
      builtBy "unzipJar" 
     } 
    } 
संबंधित मुद्दे