Hata :: APK'nın paketlenmesi sırasında dosyaları kopyala


144

Android Studio. Uygulama çalışması sırasında bu tür bir hata alıyorum.

Error:Execution failed for task ':app:packageDebug'. Duplicate files copied in APK META-INF/notice.txt

build.gradle

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

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

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

dependencies {
    compile 'com.android.support:appcompat-v7:19.0.1'
    compile 'com.j256.ormlite:ormlite-android:4.48'
    compile 'org.codehaus.jackson:jackson-core-asl:1.9.13'
    compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.13'
    compile 'com.octo.android.robospice:robospice:1.4.11'
    compile 'com.octo.android.robospice:robospice-spring-android:1.4.11'
}

Bu hatayı nasıl düzeltebilirim?

REDAKTE

Bu hariç tutulan seçenekler sorunumu çözdü:

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


2
Bu kopya değil! Diğer sorular, exlude seçeneği ekleyerek hatalarını düzeltti. Ama hepinizin görebileceği gibi bu seçenekleri ekledim ve sorunum ortadan kalkmadı.
Robertas Setkus


bu konular hakkında herhangi bir fikir var mı stackoverflow.com/questions/30364950/…
Jithu PS

Bu benimkini de çözdü. teşekkürler
Reshma

Yanıtlar:


56

Ben dize karşılaştırma büyük / küçük harf duyarlı olduğunu düşünüyorum. ile deneexclude 'META-INF/notice.txt'


Cevabım notice.txtbunun yerine denemek NOTICE.txtmiydi? Her ne kadar hata aslında hariç tutmanın gerçekleştiğinden farklı görünüyor. Bilgisayarınızda bir META-INF/notice.txtdosya var src/main/resources/mı?
Xavier Ducrohet

Üzgünüm Xavier. O zaman cevabını anlamadım. Şimdi ne demek istediğini anlayabiliyorum. Ben değişmeye çalıştım exclude 'META-INF/notice.txt'ama sonra konsol bunu istedi Duplicate files copied in APK META-INF/NOTICE.txt. Garip, değil mi? resourcesAltında bir dizin yok C:\PathToAndroidStudioProject\src\main.
Robertas Setkus

1
Her ikisini de koyarsanız exclude 'META-INF/notice.txt've exclude 'META-INF/NOTICE.TXT'işe yarıyor mu?
Xavier Ducrohet

Teşekkürler. Bu yardımcı oldu. :)
Robertas Setkus

1
'android' bölümündeki build.gradle dosyasında eklemeyi deneyin: packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' }
Krystian

22

Ben sadece build.gradle bu seçenekleri dahil etmek gerektiğini düşünüyorum :

packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
    }

1
Sonunda bunu uygulamak sonra, ben bu sorgu çözüldü. Thanks man :)
Hardik Joshi

10

Kısa cevap:

Kullanarak ayrıntılı sınıf çıktısına bakın ve gradle assembleçoğaltılan dosyaları not alın ve bunları kullanarak hariç tutun :

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

Uzun cevap:

assembleAyrıntılı çıktı için gradle görevini komut satırından çalıştırın :

./gradlew assemble || gradle assemble

Bu, nelerin hariç tutulacağını otomatik olarak gösterir:

studioWorkspace/CCDroid git:(master)  ± ./gradlew assembleDebug
:app:preBuild
:app:compileDebugNdk UP-TO-DATE
:app:preDebugBuild
:app:checkDebugManifest
:app:preReleaseBuild
:app:prepareComAndroidSupportAppcompatV72200Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42200Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:compileDebugJava UP-TO-DATE
:app:preDexDebug UP-TO-DATE
:app:dexDebug UP-TO-DATE
:app:processDebugJavaRes UP-TO-DATE
:app:validateDebugSigning
:app:packageDebug
Error: duplicate files during packaging of APK /Users/shubham/code/studioProjects/CCDroid/app/build/outputs/apk/app-debug-unaligned.apk
    Path in archive: LICENSE
    Origin 1: /Users/shubham/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.14.8/8ac073941721e0b521ec8e8bad088b1e7b8cd332/lombok-1.14.8.jar
    Origin 2: /Users/shubham/.gradle/caches/modules-2/files-2.1/org.mockito/mockito-all/1.8.4/5c97d8b6e715ed941aeb93d6fc401ab3eb18a566/mockito-all-1.8.4.jar
You can ignore those files in your build.gradle:
    android {
      packagingOptions {
        exclude 'LICENSE'
      }
    }
:app:packageDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:packageDebug'.
> Duplicate files copied in APK LICENSE
    File 1: /Users/shubham/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.14.8/8ac073941721e0b521ec8e8bad088b1e7b8cd332/lombok-1.14.8.jar
    File 2: /Users/shubham/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.14.8/8ac073941721e0b521ec8e8bad088b1e7b8cd332/lombok-1.14.8.jar


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 11.863 secs

Çıktıda bu bölüme bakın:

android {
  packagingOptions {
    exclude 'LICENSE'
  }
}

Hatta yinelenen dosyalar (LICENSE) kaynaklı bağımlılıkların listesini bile gösterir. Çıktıda Origin # bulunan satırlara bakın .


bu konular hakkında herhangi bir fikir var mı stackoverflow.com/questions/30364950/…
Jithu PS

1
Benim için doğru cevap olmasına rağmen cevabınızı neredeyse görmezden geldim. Cevabı yazının en üstüne yerleştirmenizi öneririm: android {packingOptions {hariç 'LİSANS'}} ve ardından açıklama ve uzun gradle çıktı (çoğunlukla cevapla ilgili değildir.) Bu bölüm .gradle: android {packingOptions {'LİSANS' hariç}}
gorbysbm

Bitti. Çok teşekkürler @gorbysbm.
Shubham Chaudhary

6

Bunu build.gradle dosyanıza ekleyin ...

packagingOptions {
exclude 'META-INF/NOTICE' // will not include NOTICE file
exclude 'META-INF/LICENSE' // will not include LICENSE file
exclude 'META-INF/DEPENDENCIES' // will not include LICENSE file
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}

bunun gibi...

android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
    applicationId "your package name"
    minSdkVersion 14
    targetSdkVersion 25
    versionCode 30
    versionName "3.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
packagingOptions {
    exclude 'META-INF/NOTICE' // will not include NOTICE file
    exclude 'META-INF/LICENSE' // will not include LICENSE file
    exclude 'META-INF/DEPENDENCIES' // will not include LICENSE file
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
}
}

3

Birden fazla hata var, haklısın.

Altında apply plugin: 'android-library'

bunu ekle :: android { packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' } }

1. hata dosya kopyaları, 2. hata LİSANS ve BİLDİRİM dosyalarıdır. Sonra çalışacak

EDIT :: Sorunları belirleme hakkında benim yazı görmek burada :: Android Gradle eklentisi 0.7.0: "APK paketleme sırasında çift dosyaları"


bu konular hakkında herhangi bir fikir var mı stackoverflow.com/questions/30364950/…
Jithu PS

1

bu benim için çalışıyor

android {
...

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

1

Ben ne zaman İlginçtir, silinen gradle bu çizgiyi, işe yaradı:

compile 'org.apache.commons:commons-lang3:3.3.1'

0

Ambalaj seçenekleri için doğru yeri bulmak için biraz oynamak zorunda kaldım. Jackson-core: 2.2.2 ve jackson-databind: 2.2.2 arasındaki bir çatışma için yinelenen dosya problemini çözme Ayrıca DSL son zamanlarda değişmiş gibi görünüyor Yani buildTools 23 ile son Android Studio 1.4.1'de android koymak zorunda. herhangi bir modelin {android { parantez!

model { 
   android {
        compileSdkVersion = 21
        buildToolsVersion = "23.0.1"

        defaultConfig.with {
              applicationId = "com.android.sensorgraph"
              minSdkVersion.apiLevel = 21
              targetSdkVersion.apiLevel = 22
        }
   }

   android.packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
   }
   compileOptions.with {
        sourceCompatibility = JavaVersion.VERSION_1_7
        targetCompatibility = JavaVersion.VERSION_1_7
   }
} 
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.