Dereceli yinelenen giriş hatası: META-INF / MANIFEST.MF (Ya da bir dosyayı kavanozdan silme)


19

Bir github deposunu klonladım çünkü kodu incelemek istedim, ancak Android Studio'da oluşturmaya çalıştığımda, bazı sorunlarla karşılaştım. Google maven deposunu ekledikten (Android Studio tarafından istendiği gibi) ve Hem Gradle Plugin Sürümünü hem de Grade Sürümünü güncelledikten sonra (sırasıyla 3.5.2 ve 5.4.1'e), derleme aşağıdaki hata nedeniyle başarısız olur:

Neden: yinelenen giriş: META-INF / MANIFEST.MF

Ve bu, daha spesifik olmak gerekirse:

Nedeni: java.util.zip.ZipException: yinelenen giriş: META-INF / MANIFEST.MF

İşte benim proje düzeyinde build.gradle dosya:


    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'
            }

        }
    }

İşte benim modül build.gradle dosya (bir şey denemeden önce):


    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'
    }

İşte şimdiye kadar denedim:

  • Modül build.gradle dosyamın android bölümüne aşağıdakileri ekleme:

    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'
                }
            }
        }
  • Bu ekleniyor:

    sourceSets.main.res.filter.exclude 'META-INF/MANIFEST'
        sourceSets.main.res.filter.exclude 'META-INF/MANIFEST.MF'
  • Ayrıca bu:

    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'
        }
  • Ve bu:

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

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

Sanırım bu soruda çoğunlukla her şeyi denedim: Belirli dosyaları Android Studio gradle derlemelerinden nasıl hariç tutabilirim?

Hiçbir şey işe yaramadı.

Bir çözüm aradıktan sonra, sorunun yinelenen bağımlılıklarım olduğunu düşünüyorum. Bu yüzden aşağıdakileri denedim:


    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'
    }

Ve bu:


    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'
    }

Ben hala aynı hatayı alıyorum.

Biri bana neyi yanlış yaptığımı söyleyebilir mi? Beklentin için teşekkür ederim. :)


GitHub'daki uygulamam Roboyard ile aynı problemim var: stackoverflow.com/q/59130438/1069083 Belki orada benzerlikler bulursunuz
rubo77

Yanıtlar:



6

Proje bağımlılıklarını şu şekilde ayarlayın :

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

veya sonuncusu.

Not: Bunu yaparak sorunum çözüldü.


Grad 3.5.2 ile ilgili sorunum 3.5.3'te de çözüldü, ancak dikkat edin: `` Bu derlemede Kullanımdan Kaldırılmış Gradle özellikleri kullanıldı, Gradle 6.0 ile uyumsuz hale geldi. ''
rubo77

1

Bu sorun, yinelenen bağımlılıklar nedeniyle oluyor.
Gradle uygulamasında birden çok bağımlılık olup olmadığını kontrol edin.


Doğru, sorun bu.
Gradle

1
@Srinivasan, kopyalar varsa, o zaman paketlemeOptions'ta hariç tut veya pickfirst ile çözülmüş olmalı, ancak yalnızca Gradle eklentisi ile ilgili. Ben daha kesin olarak doğrulamak ve android studio için bugtracker bir istek eklemek için sorunu yeniden oluşturmak için örnek bir uygulama oluşturmak için m.
Rajen Raiyarela

0

Ya bir kez paketleyin ya da hiç paketlemeyin:

android {
    packagingOptions {
        pickFirst "META-INF/MANIFEST.MF"
        // exclude "META-INF/MANIFEST.MF"
    }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.