Error :: archivos duplicados durante el empaquetado de APK


144

Android Studio. Recibo este tipo de error durante la ejecución de la aplicación.

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

¿Cómo puedo solucionar este error?

EDITADO

Estas opciones de exclusión resolvieron mi problema:

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
Esto no es duplicado! Otros interrogadores corrigieron su error al agregar la opción de exclusión. Pero como pueden ver, agregué estas opciones y mi problema no desapareció.
Robertas Setkus


¿Hay alguna idea sobre estos problemas stackoverflow.com/questions/30364950/…
Jithu PS

Eso resolvió el mío también. gracias
Reshma

Respuestas:


56

Creo que la comparación de cadenas distingue entre mayúsculas y minúsculas. prueba conexclude 'META-INF/notice.txt'


Mi respuesta fue sobre intentar con en notice.txtlugar de NOTICE.txt? Aunque el error se ve realmente diferente del que ocurre la exclusión. ¿Tienes un META-INF/notice.txtarchivo en tu src/main/resources/?
Xavier Ducrohet

Lo siento Xavier. No entendí tu respuesta entonces. Ahora puedo ver a qué te referías. Traté de cambiar exclude 'META-INF/notice.txt'pero luego la consola me lo solicitó Duplicate files copied in APK META-INF/NOTICE.txt. Extraño, ¿no es así? No hay resourcesdirectorio debajo C:\PathToAndroidStudioProject\src\main.
Robertas Setkus

1
Si pones ambos exclude 'META-INF/notice.txt'y exclude 'META-INF/NOTICE.TXT', ¿funciona?
Xavier Ducrohet

Gracias. Eso ayudó. :)
Robertas Setkus

1
en el archivo build.gradle en la parte 'android', intente agregar: packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' }
Krystian

22

Creo que debe incluir solo estas opciones en build.gradle :

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

1
Finalmente, después de implementar este, resolví esta consulta. Gracias hombre :)
Hardik Joshi

10

Respuesta corta:

Vea la salida detallada de gradle usando gradle assembley observe los archivos que están duplicados y excluya usando:

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

Respuesta larga:

Ejecute la assembletarea gradle desde la línea de comandos para obtener resultados detallados:

./gradlew assemble || gradle assemble

Esto muestra automáticamente qué excluir:

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

Ver esta parte en la salida:

android {
  packagingOptions {
    exclude 'LICENSE'
  }
}

Incluso muestra la lista de dependencias que originaron archivos duplicados (LICENCIA). Vea las líneas con Origin # en la salida.


¿Hay alguna idea sobre estos problemas stackoverflow.com/questions/30364950/…
Jithu PS

1
Casi ignoré tu respuesta, aunque fue la correcta para mí. Sugeriría colocar la respuesta en la parte superior de la publicación: android {packagingOptions {exclude 'LICENSE'}} seguido de la explicación y la salida larga de gradle (que en su mayoría no es relevante para la respuesta. Esta parte es Puede ignorar esos archivos en su build.gradle: android {packagingOptions {exclude 'LICENSE'}}
gorbysbm

Hecho. Muchas gracias @gorbysbm.
Shubham Chaudhary

6

Agregue esto en su archivo build.gradle ...

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

Me gusta esto...

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

Es más de un error, tienes razón.

Debajo apply plugin: 'android-library'

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

El primer error es por archivos duplicados, el segundo es por archivos de LICENCIA y AVISO. Funcionará después

EDITAR :: Vea mi publicación aquí sobre la identificación de los problemas :: Android Gradle plugin 0.7.0: "archivos duplicados durante el empaquetado de APK"


¿Hay alguna idea sobre estos problemas stackoverflow.com/questions/30364950/…
Jithu PS

1

esto funciona para mi

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

Curiosamente, cuando borré esta línea de gradle, funcionó:

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

0

Tuve que jugar un poco para encontrar la ubicación correcta para las opciones de empaquetado. Resolviendo el problema del archivo duplicado por un conflicto entre jackson-core: 2.2.2 y jackson-databind: 2.2.2 También el DSL parece haber cambiado recientemente. Así que en el reciente Android Studio 1.4.1 con buildTools 23 tienes que poner Android. opciones de empaque en el mismo nivel que compileOptions Y NO dentro de ningún modelo {android { braces!

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
   }
} 
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.