Android Gradle compilar commons-io crea duplicado en el árbol de la biblioteca
Estoy tratando de construir y mantener una antigua aplicación para el trabajo, pero no puedo pasar la fase de construcción. En mi archivo app/build.gradle
tengo
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.apache.commons:commons-io:1.3.2' //some more libraries compiled as well }
Pero obtiene el siguiente error al intentar ejecutar:
- Firebase "mientras se deserializaba, pero obtuvo una clase java.util.ArrayList"
- Android: el teclado no aparece en la ventana flotante
- Análisis de datos brutos recibidos desde el dispositivo bluetooth HDP
- Cómo dibujar gráfico de línea con diferentes colores en línea única
- Ahorro de grandes arreglos cortos android
Error: Error de ejecución para la tarea ': myApp'. Com.android.build.api.transform.TransformException: java.util.zip.ZipException: entrada duplicada: org / apache / commons / io / CopyUtils.class
Esto es casi seguro porque cuando compile ese tarro, en la parte superior de mi árbol de bibliotecas externas, esto se genera:
¿Por qué sucede esto, y cómo puedo conseguir que se detenga para poder completar la compilación?
- Singletons vs. Contexto de la aplicación en Android?
- Cómo hacer copias de seguridad de los contactos o sms en la tarjeta SD como archivo .xml o .csv y restaurarlos más tarde
- Android: pasa el camino del archivo entre dos Actividades
- IntelliJ / Android -> "java: se requiere expresión constante" en el caso R.id.viewId
- PercentRelativeLayout, cómo establecer la altura mediante programación
- Fast Bitmap Blur para Android SDK
- Android dice que no puede resolver el método 'getExternalFilesDir (null)'
- Diferencia entre res / color y res / values / colors.xml en la carpeta de recursos de Android
Hay una manera simple de excluir las clases dobles. Al principio usted necesita saber qué dependencia está causando que si usted sabe que usar este código:
compile('com.example:some-dependency:4.2') { exclude module: 'commons-io' }
Hay una opción para solucionarlo en el nivel de resolución de dependencia de gradle
configurations.all { resolutionStrategy.dependencySubstitution { substitute module('org.apache.commons:commons-io:1.3.2') with module('commons-io:commons-io:1.3.2') } }
La razón del conflicto es que org.apache.commons:commons-io:1.3.2
fue empujado por error https://stackoverflow.com/a/37421794/624706
Puedes ver de dónde viene la dependencia con
gradle :main:dependencyInsight --configuration compile --dependency commons-io
Sé que este hilo es bastante viejo, pero si alguien hace frente a este problema, la razón puede estar en el artefacto sí mismo.
com.apache.commons:commons-io:XXX
se ha movido a commons-io:commons-io:XXX
y la recuperación del antiguo artefacto puede producir un comportamiento inesperado.
Podría ser posible que otras bibliotecas en el proyecto tengan la dependencia de commons-io causando entradas duplicadas.
Ver si esto ayuda – Gradle Duplicate Entry: java.util.zip.ZipException
- Webview html formulario de entrada no mostrar / permitir el teclado
- No se puede obtener el PreferenceFragment para trabajar (error de compilación)