Error DuplicateFileException al crear APK de Android
Estoy usando Android Studio 2.0 en Windows 7. Al construir mi proyecto de Android, obtengo el siguiente error:
:app:transformResourcesWithMergeJavaResForDebug FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'. > com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK com/google/appengine/repackaged/org/apache/commons/codec/language/bm/sep_approx_spanish.txt File1: C:\Users\USER\.gradle\caches\modules-2\files-2.1\com.google.appengine\appengine-api-1.0-sdk\1.9.28\e92c18272b555027d9ec666e7a89162f10638314\appengine-api-1.0-sdk-1.9.28.jar File2: C:\Users\USER\.gradle\caches\modules-2\files-2.1\com.google.appengine\appengine-endpoints\1.9.28\bf2e8a74bd28e388b3487fc78a0c7adfa592fd5d\appengine-endpoints-1.9.28.jar`
He estado cavando durante horas y no puedo ver nada que cause esto. He eliminado .gradle en mi directorio personal, pero solo lo reconstruye todo igual. ¿Alguien sabe qué causa esto?
- Android Studio2.1 preview 5 en ubuntu no puede abrir los proyectos en
- No se pudo encontrar el método android () para los argumentos
- Cómo obtener "EnclosingMethod" errores en la construcción de Android Studio 2
- Se requiere la versión Grad10 2.10. La versión actual es 2.8 Error
- ¿Es posible ejecutar Android Device Emulator (a través de Android Studio 2) en VMWare?
Salida de gradle completa:
Executing tasks: [:app:clean, :app:generateDebugSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies, :app:generateDebugAndroidTestSources, :app:assembleDebug] Configuration on demand is an incubating feature. WARNING: Dependency org.apache.httpcomponents:httpclient:4.0.1 is ignored for debug as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages WARNING: Dependency org.apache.httpcomponents:httpclient:4.0.1 is ignored for release as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages Incremental java compilation is an incubating feature. :app:clean :app:preBuild UP-TO-DATE :app:preDebugBuild UP-TO-DATE :app:checkDebugManifest :app:preReleaseBuild UP-TO-DATE :backend:appengineDownloadSdk :backend:compileJava :backend:processResources UP-TO-DATE :backend:classes :backend:appengineEndpointsGetClientLibs UP-TO-DATE :backend:appengineEndpointsExpandClientLibs UP-TO-DATE :backend:compileEndpointsSrcJava :backend:processEndpointsSrcResources UP-TO-DATE :backend:endpointsSrcClasses :backend:_appengineEndpointsAndroidArtifact UP-TO-DATE :backend:jar UP-TO-DATE :app:prepareComAndroidSupportAnimatedVectorDrawable2330Library :app:prepareComAndroidSupportAppcompatV72330Library :app:prepareComAndroidSupportSupportV42330Library :app:prepareComAndroidSupportSupportVectorDrawable2330Library :app:prepareComGoogleAndroidGmsPlayServicesAuth840Library :app:prepareComGoogleAndroidGmsPlayServicesBase840Library :app:prepareComGoogleAndroidGmsPlayServicesBasement840Library :app:prepareComGoogleAndroidGmsPlayServicesMeasurement840Library :app:prepareDebugDependencies :app:compileDebugAidl :app:compileDebugRenderscript :app:generateDebugBuildConfig :app:generateDebugAssets UP-TO-DATE :app:mergeDebugAssets :app:generateDebugResValues UP-TO-DATE :app:processDebugGoogleServices :app:generateDebugResources :app:mergeDebugResources :app:processDebugManifest :app:processDebugResources :app:generateDebugSources :app:mockableAndroidJar UP-TO-DATE :app:preDebugUnitTestBuild UP-TO-DATE :app:prepareDebugUnitTestDependencies :app:preDebugAndroidTestBuild UP-TO-DATE :app:prepareDebugAndroidTestDependencies :app:compileDebugAndroidTestAidl :app:processDebugAndroidTestManifest :app:compileDebugAndroidTestRenderscript :app:generateDebugAndroidTestBuildConfig :app:generateDebugAndroidTestAssets UP-TO-DATE :app:mergeDebugAndroidTestAssets :app:generateDebugAndroidTestResValues UP-TO-DATE :app:generateDebugAndroidTestResources :app:mergeDebugAndroidTestResources :app:processDebugAndroidTestResources :app:generateDebugAndroidTestSources :app:compileDebugJavaWithJavac Note: Some input files use unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. :app:compileDebugNdk UP-TO-DATE :app:compileDebugSources :app:buildInfoDebugLoader :app:transformClassesWithExtractJarsForDebug :app:transformClassesWithInstantRunVerifierForDebug :app:transformClassesWithJavaResourcesVerifierForDebug UP-TO-DATE :app:mergeDebugJniLibFolders :app:transformNative_libsWithMergeJniLibsForDebug :app:processDebugJavaRes UP-TO-DATE :app:transformResourcesWithMergeJavaResForDebug FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'. > com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK com/google/appengine/repackaged/org/apache/commons/codec/language/bm/sep_approx_spanish.txt File1: C:\Users\USER\.gradle\caches\modules-2\files-2.1\com.google.appengine\appengine-api-1.0-sdk\1.9.28\e92c18272b555027d9ec666e7a89162f10638314\appengine-api-1.0-sdk-1.9.28.jar File2: C:\Users\USER\.gradle\caches\modules-2\files-2.1\com.google.appengine\appengine-endpoints\1.9.28\bf2e8a74bd28e388b3487fc78a0c7adfa592fd5d\appengine-endpoints-1.9.28.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: 15.364 secs
Por lo que puedo decir, es un conflicto entre dos dependencias:
dependencies { appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.28' compile 'com.google.appengine:appengine-endpoints:1.9.28' compile 'com.google.appengine:appengine-endpoints-deps:1.9.28' compile 'javax.servlet:servlet-api:2.5' compile 'com.google.http-client:google-http-client-jackson2:1.20.0' compile 'com.google.http-client:google-http-client-gson:1.19.0' }
Creo que son estas dos dependencias:
appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.28' compile 'com.google.appengine:appengine-endpoints:1.9.28' compile 'com.google.appengine:appengine-endpoints-deps:1.9.28'
No puedo eliminar ninguno de estos, ya que provoca errores de compilación en el módulo de backend. Parece que esas dos dependencias son casi idénticas, sin embargo. ¿Deberían estar los dos allí? Cualquier consejo es apreciado!
- ¿Cómo evitar que Android Studio 2.0 haga una compilación limpia completa después de desinstalar la aplicación del dispositivo?
- Se ha producido un error en el procesamiento de archivos, consulte los registros para obtener más detalles.
- Android Studio 2.0 IllegalArgumentException: el botón no existe 0
- Crea una aplicación de gradle local en un servidor remoto en Android Studio
- Tratando de probar un módulo de Android en la aplicación MultiDex, com.android.test.runner.MultiDexTestRunner no se reconoce
- Error al instalar parches de reinicio cuando se inicia la aplicación android con Android Studio 2.0
- RecyclerView.onBindViewHolder sólo se llama una vez
- ¿Por qué AppTheme.NoActionBar no funciona?
Para completar la respuesta de @ dsh:
En su árbol de dependencias hay 2 archivos jar que contienen el mismo archivo llamado sep_approx_spanish.txt
, esto no está permitido.
Para resolver tu problema tienes que rastrear cuál de tus dependencias de gradle tiene los dos tarros llamados appengine-api-1.0-sdk-1.9.28.jar
y appengine-endpoints-1.9.28.jar
; Para hacer esto usted puede abrir la consola del terminal del estudio del android y mecanografiar adentro:
//if ou are on windows gradlew dependencies //if you are on unix based os ./gradlew dependencies
Verás gradle haciendo muchas cosas, pero en un cierto punto imprimirá todo el árbol de dependencia. Una vez que encuentre cuáles son las 2 dependencias están causando el problema, agregue esta pieza de código al final de una de las declaraciones de dependencia
{ exclude "sep_approx_spanish.txt" }
Por ejemplo, si las dos dependencias son estas
compile 'com.google.appengine:appengine-endpoints:1.9.28' compile 'com.google.appengine:appengine-endpoints-deps:1.9.28
Si debe ser
compile 'com.google.appengine:appengine-endpoints:1.9.28'{ exclude "sep_approx_spanish.txt" } compile 'com.google.appengine:appengine-endpoints-deps:1.9.28
o
compile 'com.google.appengine:appengine-endpoints:1.9.28' compile 'com.google.appengine:appengine-endpoints-deps:1.9.28'{ exclude "sep_approx_spanish.txt" }
De esta manera se le dice a gradle que no tome en consideración ese fichero para una de las dos bibliotecas, evitando la duplicación del fichero dentro del apk.
El error le dice que la construcción de su APK daría lugar a dos archivos denominados com / google / appengine / reempaquetado / org / apache / commons / codec / idioma / bm / sep_approx_spanish.txt. Esto es un error porque el APK sólo puede contener un archivo en cualquier ruta de acceso. Esto es probablemente causado por dos archivos jar diferentes en su classpath que contienen el archivo. En mi proyecto, esto sólo ocurrió con archivos que no se utilizaron realmente en tiempo de ejecución, así que los excluí del APK por completo.
Completando la respuesta @Apperside.
Fijé el error agregando las líneas siguientes a mi archivo de build.gradle de mi módulo de la aplicación:
android{ packagingOptions { exclude 'com/google/appengine/repackaged/org/apache/commons/codec/language/bm/*' exclude 'com/google/appengine/repackaged/org/codehaus/jackson/impl/VERSION.txt' exclude 'com/google/appengine/repackaged/org/apache/commons/codec/language/*' } (...) }
- Comunicación entre webview y código nativo en una aplicación para móviles
- Fuera de error de memoria al inflar el diseño xml simple en android