Si ejecuto gradle assembleDebug
desde la línea de comando, de repente recibo este error:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
at com.android.dx.command.dexer.Main.run(Main.java:232)
at com.android.dx.command.dexer.Main.main(Main.java:174)
at com.android.dx.command.Main.main(Main.java:91)
Si grep para v4 veo dos archivos dentro de mi carpeta de compilación.
Binary file build/pre-dexed/debug/support-v4-19.0.0-2ba5fdd60a6c3836b3104a863fe42897da1fa9d1.jar matches
Binary file build/pre-dexed/debug/support-v4-r7-227d905d79b23b20866531d4f700446c040a2ccb.jar matches
Mi archivo gradle incluye solo esta biblioteca de soporte:
compile 'com.android.support:support-v13:19.0.0'
Estoy perplejo en cuanto a cómo se incluye la biblioteca r7 de alguna manera. He ejecutado gradle clean
y siempre aparece allí cuando vuelvo a ejecutar assembleDebug.
Si grep para r7 dentro del directorio de compilación, lo veo dentro del archivo:
Binary file build/exploded-bundles/ComGoogleAndroidGmsPlayServices4030.aar/classes.jar matches
Si no incluyo v13, entonces otras cosas no se compilan.
¿Pero no incluye v13 la biblioteca de soporte v4?
¿Es esto una incompatibilidad entre el paquete AAR de servicios de reproducción y la biblioteca v13?
Tomé el archivo gradle de gradleplease.appspot.com.
Eliminar los servicios de reproducción no lo arregla; mismo error.
Mis dependencias dentro de build.gradle:
dependencies {
// Google Play Services
//compile 'com.google.android.gms:play-services:4.0.30'
// Support Libraries
//compile 'com.android.support:support-v4:19.0.0'
///compile 'com.android.support:appcompat-v7:19.0.0'
//compile 'com.android.support:gridlayout-v7:19.0.0'
compile 'com.android.support:support-v13:19.0.0'
compile 'org.eclipse.mylyn.github:org.eclipse.egit.github.core:2.1.5'
compile 'commons-codec:commons-codec:1.9'
compile 'com.madgag:markdownj-core:0.4.1'
compile 'com.wu-man:android-oauth-client:0.0.2'
compile 'com.google.http-client:google-http-client-jackson2:1.17.0-rc'
compile 'org.apache.commons:commons-lang3:3.2'
compile 'com.google.code.gson:gson:2.2.4'
}
Respuestas:
Ejecute
gradle -q dependencies
(ogradle -q :projectName:dependencies
) para generar un informe de dependencia. Debería ver de dónder7
viene, como:Luego, use la
exclude
directiva para bloquear esa dependencia. En mi caso, proviene de mi biblioteca de cámaras CWAC, por lo que uso:(donde la segunda
compile
declaración indica qué versión realmente quieres)Eso debería aclarar las cosas, como verá si vuelve a ejecutar el informe de dependencia:
fuente
gradle dependencies
parece no informar dependencias agregadas concompile files('libs/example.jar')
libs/*.jar
dependencias con un módulo en común, ninguna está disponible como artefacto. ¿Alguna forma de realizar una inspección de dependencia / exclusión de clase similar?compile project(':foo')
encompile(project(':foo')) { exclude module: 'support-v4' }
. Tenga en cuenta el paréntesis.Resolví un error similar al agregar el siguiente fragmento de código a mi archivo build.gradle dentro del bloque de Android.
fuente
Como una imagen vale más que mil palabras
Para que sea más fácil y rápido hacer esta tarea con principiantes como yo. Estas son las capturas de pantalla que muestran la respuesta publicada por @ edsappfactory.com que funcionó para mí:
Primero abra la vista Gradle en el lado derecho de Androidstudio, en el elemento de su aplicación, vaya
Tasks
,Android
luego haga clic derecho yandroidDependencies
luego elijaRun
:En segundo lugar verá algo como esto:
La razón principal por la que publiqué esto es que no era fácil saber dónde ejecutar una
gradle
tarea o los comandos publicados anteriormente. Así que aquí también es donde ejecutarlos.SO, para ejecutar el comando gradle:
Primero:
Segundo:
Tan fácil como es.
Eso es.
Gracias.
fuente
También para tener en cuenta que puede ver sus dependencias de Android, yendo a su vista de Android Studio Gradle y seleccionando el objetivo "androidDependencies".
Un consejo más: estaba teniendo este problema, hasta que eliminé la v4 support lib de la carpeta libs tanto en el proyecto como en mi (s) proyecto (s) de módulo / biblioteca relacionados.
fuente
Comencé a recibir este error al actualizar a ButterKnife 8.5.1. Ninguna de las otras respuestas aquí funcionó para mí.
Solía
gradle -q :app:dependencies
ver el árbol, y luego miraba los archivos jar hasta encontrar el conflicto. El conflicto fue que la dependencia de butterknife encom.android.support:support-compat:25.1.0
contiene una versión de la clase de accesibilidad, ycom.android.support:support-v4:23.1.1
también contiene la clase.Lo resolví cambiando mi dependencia de esto:
a esto:
Hasta el momento, no parece afectar la operación de ButterKnife.
Editar: hay una mejor solución, que era actualizar mis bibliotecas de soporte de Android para que coincidan con las de ButterKnife:
fuente
En caso de que alguien descubra que la respuesta de CommonsWare no se pudo aplicar al proyecto de la biblioteca de Android, aquí está el fragmento para solucionar
compilar (proyecto (': yourAndroidLibrary')) {excluir módulo: 'support-v13'}
Encontrarás problemas
si utiliza el proyecto de compilación (': yourAndroidLibrary') {excluya el módulo: 'support-v13'}
Las diferencias son la pulsera "(" y ")" antes de "proyecto" .
fuente
No funcionaría para mí con una dependencia de proyecto, la única forma en que pude hacerlo funcionar fue a través de la siguiente sintaxis:
Dónde: Android-SDK es el nombre de tu proyecto.
fuente
Tuve el mismo problema y parece que mi aplicación tenía demasiados métodos debido a las bibliotecas: http://developer.android.com/tools/building/multidex.html
Resuelto con:
Más aquí Error: Error en la ejecución de la tarea ': aplicación: dexDebug'. > el comando finalizó con un valor de salida distinto de cero 2
fuente
Tuve este mismo error pero fue porque recientemente había cambiado de usar v4 a v13. Así que todo lo que tenía que hacer era limpiar el proyecto.
fuente
Tuve el mismo error en un proyecto heredado. Mi culpa fue que la biblioteca de soporte se incluyó dos veces: una dentro de google-play-services lib y otra como independiente.
Así es como lo arreglé:
MALO build.gradle:
BUEN build.gradle:
Espero que ayude a alguien :-)
fuente
Estoy usando
com.google.android.gms:play-services-analytics:8.3.0
yandroid-support-v13.jar
no pude irexclude module: 'support-v4'
a trabajar.Lo que funcionó para mí fue usar el
android-support-v13
artefacto en lugar delandroid-support-v13.jar
archivo.Es decir, en lugar de
}
solía
}
fuente
En mi caso, el problema fue causado por la inconsistencia de la versión :
La solución fue simple: hacer que todo sea la versión 25
fuente
Un método similar de resolución de problemas de dex
gradle.build contenía:
El problema se resolvió cuando eliminé
Mi gradle ahora se ve así:
Hubo una redundancia en el archivo JAR y el proyecto compilado de gradle
Por lo tanto, busque con atención las dependencias y los archivos jar que tengan las mismas clases.
Y eliminar la redundancia.
Esto funcionó para mí.
fuente
Si ha importado su proyecto desde Eclipse .
El escenario que he enfrentado después de importar el proyecto Eclipse al estudio de Android.
Espero que esto ayude..
fuente
Este es un problema molesto, que puede llevar algún tiempo descubrir el caso raíz. La forma en que debe proceder es la respuesta @CommonsWare.
Recientemente me enfrenté a este problema y me resultó difícil resolverlo.
Mi problema fue que estaba incluyendo una biblioteca por versión "+" en build.gradle. La última versión de la biblioteca contenía una dex y bang anteriores.
Volví a la versión anterior de la biblioteca y la resolví.
Es bueno ejecutar sus AndroidDependencies y ver qué está sucediendo realmente. También es bueno buscar en su carpeta de compilación.
Sobre todo, Android Studio 2.2 proporciona funciones de compilación para rastrear este problema.
Happy Coding Guys
fuente
En Android Studio, vaya a su build.gradle (verifique los archivos build.gradle del proyecto y de los módulos) y busque dependencias duplicadas.
Elimine aquellos que su proyecto no necesita.
fuente
Eliminar todos los archivos del caché de Gradle solucionó mi problema.
en Linux:
fuente
Eliminé la compilación 'com.android.support:support-v4:18.0.+' en dependencias, y funciona
fuente
Pude resolver el problema en mi proyecto nativo reactivo simplemente agregando
al final de mi archivo android \ app \ build.gradle
fuente
Finalmente, lo resolví modificando estos atributos en el archivo gradle del módulo
fuente
Tuve el mismo problema al agregar
react-native-palette
a mi proyecto, aquí está mi árbol de dependencias:Probé muchas soluciones y no pude solucionarlo, hasta que cambie la
com.android.support:appcompat
versiónandroid/app/build.gradle
, me gustaría que esto pueda ayudar:parece que múltiples entradas no es un gran problema, la versión no coincide
fuente
Lo
compile file('...')
hice funcionar para un conflicto al aumentar minSdkVersion a 21 y habilitar multidex. No estoy seguro de si esa es la mejor solución, pero la única forma en que podría hacerlo funcionar en mi caso.Nota: porque
compile file('...')
parece que no puede poner unaexclude
cláusula por lo que esa opción no estaba disponible.fuente
Tuve el mismo problema y mi solución está cambiando la versión de soporte '27. + '(27.1.0) a '27 .0.1'
fuente
He tenido el mismo problema. En mi proyecto, tuve las siguientes dependencias:
Por razones heredadas, el appcompat se obtuvo del repositorio de Google Maven, mientras que el soporte de Android era un .jar local.
Cuando descubrí esto, y reemplacé esta referencia local con una referencia de Maven, solo resolvió mi problema de compilación.
Aquí está la diferencia de mi aplicación / build.gradle:
fuente
Resolví todos mis problemas agregando esto a project.properties
fuente
Recibió el siguiente error
Error en la ejecución de la tarea ': aplicación: transformDexArchiveWithDexMergerForDebug'.
Solución: ve a Build -> Clean Project
fuente