Error :: archivos duplicados durante el envasado de APK
Android Studio. Estoy recibiendo 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
- Error: Error de ejecución para la tarea ': app: transformResourcesWithMergeJavaResForDebug'
- AnnotationProcessor + androidTest + dagger2
- Gradle-experimental: 0.1.0 buildConfigField
- ¿Cómo usar la dependencia aar local?
- No se puede instalar la versión de depuración y de liberación en el mismo dispositivo
Construir un gradiente
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 corregir este error?
EDITADO
Estas opciones de exclusión resuelto 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' }
- Gradle resValue causa recursos de cadena duplicados
- ¿Cómo compartir String entre varios módulos?
- ¿Cómo puedo añadir sabores en un módulo con Android Studio?
- Android SDK sample + error "gradle build": org.gradle.api.tasks.TaskExecutionException: Error en la ejecución de la tarea
- Agregue una dependencia a un complemento de Android Cordova
- Cómo cambiar el directorio libs en Gradle?
- Herramientas: reemplazar no reemplazar en el manifiesto de Android
- Personalizar AndroidManifest en diferentes tipos de compilación
Creo que la comparación de cadenas es sensible a mayúsculas. Intente con exclude 'META-INF/notice.txt'
Creo que es necesario incluir sólo estas opciones en build.gradle :
packagingOptions { exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' }
Respuesta corta:
Vea la salida gradle detallada usando gradle assemble
y anote los archivos que son duplicados y excluirlos usando:
android { packagingOptions { exclude 'META-INF/notice.txt' } }
Respuesta larga:
Ejecute la tarea de assemble
gradle desde la línea de comandos para una salida detallada:
./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 Origen # en la salida.
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' } }
Es más de un error, tienes razón.
Bajo apply plugin: 'android-library'
Agregue esto:: android { packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' } }
El primer error es por duplicados de archivos, el segundo es por LICENCIA y archivos de AVISO. Funcionará después de
EDIT :: Ver mi post aquí sobre la identificación de los problemas :: Android Gradle plugin 0.7.0: "archivos duplicados durante el embalaje de APK"
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' } }
Curiosamente, cuando eliminé esta línea de gradle, funcionó:
compile 'org.apache.commons:commons-lang3:3.3.1'
Tuve que jugar un poco para encontrar la ubicación correcta para el packagingOptions. Solucionar el problema del archivo duplicado para 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 embalaje 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 }
}
- Android.os.FileUriExposedException: archivo: ///storage/emulated/0/test.txt expuesto más allá de la aplicación a través de Intent.getData ()
- ¿Por qué es mi teclado emulador de Android en modo de caracteres chinos?