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'
    }
Robertas Setkus
fuente
posible duplicado de archivos duplicados copiados (Android Studio 0.4.0)
Scott Barta
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'

Xavier Ducrohet
fuente
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'
    }
Gent Berani
fuente
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.

Shubham Chaudhary
fuente
¿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'
}
}
vrbsm
fuente
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"

Pian0_M4n
fuente
¿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'
    }
}
Joolah
fuente
1

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

compile 'org.apache.commons:commons-lang3:3.3.1'
Perezoso
fuente
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
   }
} 
UV
fuente