एंड्रॉइड स्टूडियो 0.4 एपीके मेटा-इन / LICENSE.txt में कॉपी की गई डुप्लिकेट फाइलें


115

अपने स्टूडियो को 0.3.7 से 0.4.0 तक अपडेट करने के बाद, मैं अपने प्रोजेक्ट को संकलित नहीं कर सकता। मुझे स्टैकओवरफ़्लो पर एक समाधान मिला: डुप्लिकेट फ़ाइलों की प्रतिलिपि बनाई गई (Android Studio 0.4.0)

मैंने अपनी परियोजना को 0.7 में बदलने के लिए अद्यतन किया। + लेकिन मुझे नहीं पता कि मुझे अगले तार कहाँ लगाने चाहिए:

android {

    packagingOptions {
       exclude 'META-INF/LICENSE.txt'
    }
}

मेरा लॉगकाट: लॉग

Execution failed for task ':Prog:packageDebug'.
> Duplicate files copied in APK META-INF/LICENSE.txt
    File 1: /home/scijoker/AndroidStudioProjects/ProgProject/Prog/libs/httpclient-4.1.1.jar
    File 2: /home/scijoker/AndroidStudioProjects/ProgProject/Prog/libs/httpclient-4.1.1.jar

PS ubuntu 13.04 में विकसित


2
अंदर androidअनुभाग
यूजेन मार्टीनोव

धन्यवाद। मैंने मुख्य पैकेजिंग कॉन फ़ाइल में ब्लॉक पैकेजिंगऑफिस () डाला। पहले मैंने इस ब्लॉक को पुस्तकालयों में वर्गीकृत फ़ाइलों में डाला। सभी काम पूरी तरह से =)
a.black13

जवाबों:


155

शीर्ष पर आश्रितों को रखना और अंत में संकुल संगठनों ने मेरे लिए काम किया।

apply plugin: 'android'. 

यहाँ app फ़ोल्डर में मेरा पूरा build.gradle है।

dependencies {
    compile 'com.android.support:support-v4:+'
    compile files('libs/apache-mime4j-0.6.jar')
    compile files('libs/httpmime-4.0.jar')
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 10
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-    rules.txt'
    }


    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LGPL2.1'
    }
}

संपादित करें: लगभग सभी ओएस लाइसेंस में आपकी परियोजना में "लाइसेंस की एक प्रति शामिल करना" का दायित्व शामिल है। तो इसका मतलब है, कि आपको उन सभी OS लाइसेंसों की एक प्रति शामिल करनी होगी, जिनका आप परियोजनाओं में उपयोग करते हैं। उन्हें ढाल में "बाहर" करने से, आप लाइसेंस का उल्लंघन करते हैं।

परियोजना से उन्हें बाहर करना सबसे अच्छा विकल्प नहीं हो सकता है। जानकारी के लिए धन्यवाद आर.एस.


2
@Andree हम फ़ाइलों को बाहर करने का कारण यह है क्योंकि हम नहीं चाहते हैं कि .txt (और अन्य) फ़ाइलों को .apk में शामिल किया जाए जो कि बिल्ड द्वारा उत्पन्न किया जाएगा।
बनिअम

4
बहिष्कृत Android के बाहर मान्यता प्राप्त नहीं है {}: /
An-droid

4
बहिष्कृत Android {} के अंदर होना चाहिए, तभी यह काम करता है।
पवन प्यति

2
! यह समाधान सभी ओपन सोर्स लाइसेंस का उल्लंघन करता है! जैसा कि आप अपने पैकेज में प्रत्येक पुस्तकालय के मूल लाइसेंस पाठ को जोड़ने के लिए बाध्य हैं
आरएस

2
नमस्ते। कोई भी। लगभग सभी ओएस लाइसेंस में आपकी परियोजना में "लाइसेंस की एक प्रति शामिल करना" का दायित्व शामिल है। तो इसका मतलब है, कि आपको उन सभी OS लाइसेंसों की एक प्रति शामिल करनी होगी, जिनका आप परियोजनाओं में उपयोग करते हैं। उन्हें ढाल में "बाहर" करने से, आप लाइसेंस का उल्लंघन करते हैं।
आरएस

47

ध्यान!! संभावित OpenSource लाइसेंस उल्लंघन।

जैसा कि आप अपने स्रोत से जोड़ने के लिए सहमत होने के लिए ओपनसोर्स लाइसेंस में एक सामान्य बिंदु है, जैसा कि ऊपर प्रस्तावित लाइसेंस को छोड़कर। आप कुछ ओपनसोर्स लाइसेंस का उल्लंघन कर सकते हैं। अपने ओपनसोर्स लाइसेंस की बेहतर जांच करें।

अद्यतन: जब तक कोई बेहतर उपाय न हो, तब तक उपयोग करें

packagingOptions {
   pickFirst  'META-INF/license.txt'
}

इस तरह आप कम से कम लाइसेंस दायित्व का एक हिस्सा पूरा करते हैं


23

बस जोड़ दो

android {
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
    }
}

in build.gradle


हमारे द्वारा इस तरह के ओपनसोर्स लाइसेंस का उल्लंघन किया जा रहा है
RS

16

आप निम्नलिखित कोड जोड़कर इसे ठीक कर सकते हैं project/app/build.gradle:

android {
    // Fixed build error : Duplicate files copied in APK META-INF/xxx
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/LICENSE.txt'
    }
}

नमस्ते। यह समस्या 1.5 साल पहले तय की गई थी
a.black13

:-) मैं आज सिर्फ इस समस्या से मिला और इस धागे को पाया। और मैं तारीख पर ध्यान नहीं देता।
अल्फ्रेडजॉन्ग

आपने तिथि नहीं देखी और अन्य सभी उत्तरों को अनदेखा कर दिया।
अविश्वसनीय जान

11

मुझे ग्रेडेल के नए संस्करण के अनुसार एक ही समस्या का सामना करना पड़ रहा था, मेरे लिए build.gradle पाठ प्रारूप काम के नीचे :

मेरे लिबास फोल्डर में दो जैकसन जार हैं।

android {
         compileSdkVersion 21
         buildToolsVersion "21.1.2"

         defaultConfig {
            applicationId "com.omtlab.myapplication"
            minSdkVersion 14
            targetSdkVersion 21
            versionCode 1
            versionName "1.0"
         }
         buildTypes {
             release {
                 minifyEnabled false
                 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
         }
         packagingOptions {
            exclude 'libs/jackson-core-asl-1.9.13.jar'
            exclude 'libs/jackson-mapper-asl-1.9.13.jar'
            exclude 'META-INF/ASL2.0'
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/NOTICE'
         }
}

dependencies {
    //compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile files('libs/jackson-core-asl-1.9.13.jar')
    compile files('libs/jackson-mapper-asl-1.9.13.jar')
}

धन्यवाद! मैं आज इसके खिलाफ ~ 5 घंटे के लिए अपना सिर पीट रहा था। :) यह है packagingOptions { exclude 'libs/jackson...' }कि यह तय है।
CJBrew

8

जोड़ना:

packagingOptions {
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/NOTICE.txt'
}

मेरे लिए काम किया, biniam_Ethiopia का समाधान संभवतः सबसे विफल-सुरक्षित है


8

इस कोड को डालते समय

android{

packagingOptions{
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/license.txt'
 }
}

यह सुनिश्चित करें कि यदि त्रुटि दिखाई दे रही है

> APK META-INF / LICENSE.txt में कॉपी की गई डुप्लीकेट फाइलें

फिर जोड़िए

 android{

packagingOptions{
    exclude 'META-INF/LICENSE.txt'
 }

}

अगर गलती से यह दिख रहा है

> APK META-INF / LICENSE में कॉपी की गई डुप्लीकेट फाइलें

फिर जोड़िए

 android{

packagingOptions{
    exclude 'META-INF/LICENSE'
 }

}

अगर गलती से यह दिख रहा है

> डुप्लीकेट फाइलें एपीके मेटा-इन / लाइसेंस.नेट में कॉपी की गई

फिर जोड़िए

 android{

packagingOptions{
    exclude 'META-INF/license.txt'
 }

}

लघु पाठ में CASE और दस्तावेज़ FORMAT (.txt) इतना महत्वपूर्ण है।

(यह त्रुटि एंड्रॉइड स्टूडियो 1.1.0 में भी मौजूद है)


6

इससे आपको समस्या को हल करने में मदद मिलेगी

packagingOptions {
    exclude 'META-INF/ASL2.0'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/DEPENDENCIES'
}

अगर यह मूल रूप से उचित उत्तर के समान है, तो इसमें इतने सारे परिवर्तन क्यों हैं?
13

4
packagingOptions {
    exclude 'META-INF/DEPENDENCIES.txt'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/dependencies.txt'
    exclude 'META-INF/LGPL2.1'
}

Build.gradle फ़ाइल और syn प्रोजेक्ट में जोड़ें


3

मैं सिर्फ 2 जोड़ता हूं:

android{

packagingOptions{
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/LICENSE'
 }

}

क्या इसे अभी भी ऐप उत्पादन में शामिल किया जाएगा?
RoCk RoCk

2

मेरे पास एक समान त्रुटि थी और इसे बिना packingOptions()और excludeफ़ंक्शन के हल किया गया । मैं दो निर्भरताएं जोड़ रहा था लेकिन एक पहले का एक उप-समूह था। इस त्रुटि के कारण, एक बार जब मैंने उनमें से एक को हटा दिया तो मुझे एक साफ निर्माण मिला। मैं आपकी निर्भरता ब्लॉक के भीतर एक समान त्रुटि के लिए जाँच करने की सलाह देता हूं।


नमस्ते, मैं इस समस्या को एक लंबे समय से पहले packOptions () जोड़कर हल किया है। उत्तर के लिए धन्यवाद) +1
a.black13

यह समस्या AS के नए उपलब्ध संस्करण में तय की गई है
a.black13

2

उपयोग करते समय java-jwtऔर jackson-coreसाथ में निम्नलिखित का उपयोग करें:

exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.xml")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.xml")

2

यह बहुत अच्छी तरह से बुरा अभ्यास हो सकता है, हालांकि यदि आप कई बड़े पुस्तकालयों को शामिल कर रहे हैं, तो आप सैकड़ों प्रकार के संघर्षों के माध्यम से खुद को काम कर सकते हैं।

नीचे सूचीबद्ध ऐसे मामलों के लिए एक सुपर-सरल निर्धारण है:

android { 
    ....
    packagingOptions {
        // Allow the compilation process to choose the dependencies for us.
        pickFirst "**"
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.