ग्रेड डुप्लिकेट प्रविष्टि त्रुटि: META-INF / MANIFEST.MF (या जार से किसी फ़ाइल को कैसे हटाएं)


19

मैंने एक जीथब रिपॉजिटरी पर क्लोन किया है क्योंकि मैं कोड का अध्ययन करना चाहता था, लेकिन जब मैंने इसे एंड्रॉइड स्टूडियो में बनाने की कोशिश की, तो मैं कुछ परेशानी में भाग गया। Google मावेन रिपॉजिटरी (जैसा कि एंड्रॉइड स्टूडियो द्वारा संकेत दिया गया है) को जोड़ने और ग्रेडल प्लगिन संस्करण और ग्रेड संस्करण (3.5.2 और 5.4.1, क्रमशः) दोनों को अपडेट करने के बाद, निम्न त्रुटि के कारण बिल्ड विफल हो जाता है:

कारण: डुप्लिकेट प्रविष्टि: META-INF / MANIFEST.MF

और यह, और अधिक विशिष्ट होने के लिए:

इसके कारण: java.util.zip.ZipException: डुप्लिकेट प्रविष्टि: META-INF / MANIFEST.MF

यहाँ मेरी परियोजना स्तर build.gradle फ़ाइल है:


    buildscript {
        repositories {
            jcenter()
            google()
        }

        dependencies {
            classpath 'com.android.tools.build:gradle:3.5.2'

            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }

    allprojects {
        repositories {
            jcenter()

            maven {
                url 'https://maven.google.com'
            }

        }
    }

यहाँ मेरा मॉड्यूल build.gradle फ़ाइल (कुछ भी करने से पहले) है:


    apply plugin: 'com.android.application'

    android {
        compileSdkVersion 22
        buildToolsVersion '28.0.3'

        defaultConfig {
            applicationId "com.thelittlenaruto.supportdesignexample"
            minSdkVersion 11
            targetSdkVersion 22
            versionCode 1
            versionName "1.0"
        }

        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }

    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation ('com.android.support:appcompat-v7:22.2.1')
        implementation ('com.android.support:design:22.2.1')
        implementation 'com.github.frankiesardo:linearlistview:1.0.1@aar'
    }

यहाँ मैंने जो अभी तक कोशिश की है:

  • मेरे मॉड्यूल build.gradle फ़ाइल के एंड्रॉइड सेक्शन में निम्नलिखित जोड़ना:

    sourceSets {
            main{
                java{
                    exclude '**/META-INF/MANIFEST'
                    exclude '**/META-INF/MANIFEST.MF'
                    exclude 'META-INF/MANIFEST'
                    exclude 'META-INF/MANIFEST.MF'
                    exclude '!META-INF/MANIFEST.MF'
                }
            }
        }
  • इसे जोड़ना:

    sourceSets.main.res.filter.exclude 'META-INF/MANIFEST'
        sourceSets.main.res.filter.exclude 'META-INF/MANIFEST.MF'
  • यह भी:

    packagingOptions {
            apply plugin: 'project-report'
            exclude '**/META-INF/MANIFEST'
            exclude '**/META-INF/MANIFEST.MF'
            exclude 'META-INF/MANIFEST'
            exclude 'META-INF/MANIFEST.MF'
            exclude '!META-INF/MANIFEST.MF'
        }
  • और इस:

    packagingOptions {
            pickFirst '**/META-INF/MANIFEST'
            pickFirst '**/META-INF/MANIFEST.MF'
            pickFirst 'META-INF/MANIFEST'
            pickFirst 'META-INF/MANIFEST.MF'
            pickFirst '!META-INF/MANIFEST.MF'
        }
  • इस:

    aaptOptions {
            ignoreAssetsPattern "!META-INF/MANIFEST.MF"
            ignoreAssetsPattern "META-INF/MANIFEST.MF"
        }

मुझे लगता है कि मैंने इस सवाल में ज्यादातर सब कुछ करने की कोशिश की है: एंड्रॉइड स्टूडियो ग्रेडल बिल्ड से कुछ फ़ाइलों को कैसे बाहर रखा जाए?

कुछ भी काम नहीं किया।

समाधान की खोज करने के बाद, मुझे लगता है कि समस्या यह है कि मेरे पास निर्भरताएं हैं। इसलिए मैंने निम्नलिखित कोशिश की है:


    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation ('com.android.support:appcompat-v7:22.2.1'){
            exclude module: 'support-v4'
        }
        implementation ('com.android.support:design:22.2.1')
        implementation 'com.github.frankiesardo:linearlistview:1.0.1@aar'
    }

और इस:


    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation ('com.android.support:design:22.2.1'){
            exclude module: 'support-v7'
        }
        implementation 'com.github.frankiesardo:linearlistview:1.0.1@aar'
    }

मुझे अब भी वही त्रुटि मिलती है।

क्या कोई मुझे बता सकता है कि मैं क्या गलत कर रहा हूं? तुम्हारे पूर्वानुमान के लिए धन्यवाद। :)


मुझे अपने ऐप रोबॉयार्ड के साथ GitHub पर यहाँ भी यही समस्या है: stackoverflow.com/q/59130438/1069083 शायद आपको वहाँ समानताएँ मिलें
rubo77

जवाबों:


22

जैसा कि राजेन रायरेला ने कहा, फाइल- > प्रोजेक्ट स्ट्रक्चर-> प्रोजेक्ट-> एंड्रॉइड ग्रैगल प्लगिन संस्करण पर जाएं और इसे 3.5.2 से 3.5.1 पर डाउनग्रेड करें।


8
यह वास्तव में एक समाधान नहीं है। एंड्रॉइड स्टूडियो हर बार अपग्रेड करने के लिए परेशान हो रहा है ...
डॉक्टरराम

यह उत्तर अप्रचलित है, क्योंकि उन्नयन 3.5.3 के उन्नयन के बजाय समस्या को ठीक करने के लिए लगता है
rubo77

6

परियोजना निर्भरताएँ इसके लिए निर्धारित करें :

classpath 'com.android.tools.build:gradle:3.5.3'

या नवीनतम एक।

नोट: ऐसा करने से, मेरी समस्या का समाधान हो गया है।


3.5.2 के साथ मेरी समस्या 3.5.3 में भी हल हो गई है, लेकिन जागरूक रहें: मुझे चेतावनी मिली है कि इस बिल्ड में `डिप्रेस्ड ग्रेडेड फीचर्स का उपयोग किया गया था, जिससे ग्रेडल 6.0 के साथ असंगत हो गया है।`
rubo77

1

डुप्लिकेट निर्भरता के कारण यह समस्या हो रही है।
ग्रैडल ऐप में कई निर्भरता की जांच करें।


सही है, यह मुद्दा है। आपके
ग्रेड

1
@ श्रीनिवासन, यदि डुप्लिकेट थे, तो इसे पैकेजिंगऑक्शंस में या तो बाहर रखा जाना चाहिए या पिकफर्स्ट द्वारा हल किया जाना चाहिए, लेकिन यह केवल ग्रेड प्लगइन के साथ जारी करता है। मैं अभी तक अधिक सटीक सत्यापन कर रहा हूं और एंड्रॉइड स्टूडियो के लिए बगट्रैकर में अनुरोध जोड़ने के लिए समस्या को पुन: उत्पन्न करने के लिए एक नमूना एप्लिकेशन बनाता हूं।
राजेन रायरेला

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.