library - Varios archivos dex definen Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat
com.android.support:design 26 (25)
Comencé a recibir este error al actualizar a ButterKnife 8.5.1. Ninguna de las otras respuestas aquí funcionó para mí.
Utilicé las gradle -q :app:dependencies
para ver el árbol, y luego miré los archivos jar hasta que encontré el conflicto. El conflicto fue que la dependencia de butterknife en com.android.support:support-compat:25.1.0
contiene una versión de la clase de accesibilidad, y com.android.support:support-v4:23.1.1
también contiene la clase.
Lo resolví cambiando mi dependencia de esto:
compile ''com.jakewharton:butterknife:8.5.1''
a esto:
compile(''com.jakewharton:butterknife:8.5.1'') {
exclude module: ''support-compat''
}
No parece afectar la operación de ButterKnife hasta ahora.
Edición: hay una mejor solución, que fue actualizar mis bibliotecas de soporte de Android para que coincidan con las de ButterKnife:
compile(''com.android.support:appcompat-v7:25.2.0'')
compile(''com.android.support:design:25.2.0'')
compile ''com.jakewharton:butterknife:8.5.1''
Si ejecuto gradle assembleDebug
desde la línea de comandos, de repente gradle assembleDebug
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 de gradle incluye solo esta biblioteca de soporte:
compile ''com.android.support:support-v13:19.0.0''
Estoy sorprendido de cómo la biblioteca r7 se incluye 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 v13 incluye v4 biblioteca de soporte?
¿Es esto una incompatibilidad entre el paquete AAR de servicios de juego y la biblioteca v13?
Tomé el archivo de gradle de gradleplease.appspot.com.
Eliminar los servicios de juego 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''
}
Como una imagen vale más que mil palabras.
Para que sea más fácil y rápido realizar 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 de Gradle en el lado derecho de Androidstudio, en el elemento de su aplicación vaya a Tasks
luego a Android
, haga clic con el botón derecho en Android
androidDependencies
luego elija Run
:
En segundo lugar verás algo como esto:
La razón principal por la que gradle
esto es que no era fácil saber dónde ejecutar una tarea de gradle
o los comandos publicados anteriormente. Así que aquí es donde los excitan también.
SO, para ejecutar el comando gradle:
Primero:
Segundo:
Fácil como es.
Eso es.
Gracias.
Ejecute las gradle -q dependencies
(o gradle -q :projectName:dependencies
) para generar un informe de dependencia. Debería ver de dónde viene r7
, como:
compile - Classpath for compiling the main sources.
+--- com.commonsware.cwac:camera-v9:0.5.4
| +--- com.actionbarsherlock:actionbarsherlock:4.4.0
| | /--- com.google.android:support-v4:r7
| +--- com.commonsware.cwac:camera:0.5.4
| /--- com.android.support:support-v4:18.0.+ -> 18.0.0
/--- com.android.support:support-v4:18.0.+ -> 18.0.0
Luego, use la directiva de exclude
para bloquear esa dependencia. En mi caso, proviene de mi biblioteca de cámaras CWAC, y por eso uso:
dependencies {
compile(''com.commonsware.cwac:camera-v9:0.5.4'') {
exclude module: ''support-v4''
}
compile ''com.android.support:support-v4:18.0.+''
}
(donde la segunda instrucción de compile
indica qué versión realmente quieres)
Eso debería aclarar las cosas, como verá si vuelve a ejecutar el informe de dependencia:
compile - Classpath for compiling the main sources.
+--- com.commonsware.cwac:camera-v9:0.5.4
| +--- com.actionbarsherlock:actionbarsherlock:4.4.0
| /--- com.commonsware.cwac:camera:0.5.4
/--- com.android.support:support-v4:18.0.+ -> 18.0.0
Eliminé la compilación ''com.android.support:support-v4:18.0.+'' en dependencias, y funciona
En Android Studio, vaya a su build.gradle (verifique los proyectos y los archivos de build.gradle de los módulos) y busque dependencias duplicadas.
Borra aquellos que tu proyecto no necesita.
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 corregirlo.
compile (project ('': yourAndroidLibrary'')) {exclude module: ''support-v13''}
Encontraras problemas
Se encontró un método DSL de Gradle no compatible: ''exclude ()''
si usas compilar proyecto ('': yourAndroidLibrary'') {exclude module: ''support-v13''}
Las diferencias son la pulsera "(" y ")" antes de "proyecto" .
En mi caso, el problema fue causado por la inconsistencia de la versión :
Build tools 25
compileSdk 24
targetSdk 24
Support library 24
La solución fue simple: hacer todo la versión 25.
Este es un problema molesto, que puede llevar algún tiempo encontrar el caso raíz. La forma en que debe proceder es la respuesta de @CommonsWare.
Me enfrenté a este problema recientemente y me resultó difícil de resolver.
Mi problema era que estaba incluyendo una biblioteca con la versión "+" en build.gradle. La última versión de la biblioteca contenía uno de los anteriores dex y bang.
Volví a la versión anterior de la biblioteca y la resolví.
Es bueno ejecutar sus dependencias de Android y ver lo que realmente está sucediendo. También es bueno buscar en su carpeta de compilación.
Sobre todo, Android Studio 2.2 proporciona características de construcción para rastrear este problema.
Felices chicos de codificación
Estoy usando com.google.android.gms:play-services-analytics:8.3.0
y android-support-v13.jar
y no puedo obtener el exclude module: ''support-v4''
para que funcione.
Lo que funcionó para mí fue usar el artefacto android-support-v13
lugar del archivo android-support-v13.jar
.
Es decir, en lugar de
dependencies {
compile (''com.google.android.gms:play-services-analytics:8.3.0'')
compile files(''libs/android-support-v13.jar'')
}
solía
dependencies {
compile (''com.google.android.gms:play-services-analytics:8.3.0'')
compile (''com.google.android:android-support-v13'')
}
Finalmente, lo resolví modificando estos atributos en el módulo gradle file.
- compileSdkVersion 25
- targetSdkVersion 25
- compilar ''com.android.support:appcompat-v7:+''
- compilar ''com.android.support:recyclerview-v7:+''
He tenido el mismo problema. En mi proyecto, tuve las siguientes dependencias:
- appcompat-v7
- android-support-v13
Por razones de legado, la aplicación se extrajo 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á el diff de mi app / build.gradle:
Resolví todos mis problemas agregando esto en project.properties
cordova.system.library.7=com.android.support:appcompat-v7:27.1.0
Se puso a trabajar para un conflicto de compile file(''...'')
al aumentar minSdkVersion a 21 y habilitar multidex. No estoy seguro de si esa es la mejor solución, pero la única manera de que funcione en mi caso.
Nota: para el compile file(''...'')
parece que no puede incluir una cláusula de exclude
por lo que esa opción no estaba disponible.
Si has importado tu proyecto desde Eclipse .
1. The select project
2. Go to File -> **Project Structure**
3. Select app in **module** section on left hand panel
4. Select **Dependency** tab
5. Your able to see jars you have added in eclipse project for v4 and v13.
6. Remove that jar by clicking on minus sign at bottom after selection
7. Click on Plus sign select **Library Dependency**
8. Choose V4 and V13 if added
9. Press Ok and Clean and Rebuild your project
El escenario al que me he enfrentado después de importar el proyecto Eclipse al estudio de Android.
Espero que esto ayude..
También debe tener en cuenta que puede ver sus dependencias de Android, accediendo a su vista de Android Studio Gradle y seleccionando las "Dependencias de Android" de destino.
Un consejo más: estaba teniendo este problema, hasta que eliminé la versión de soporte de v4 de la carpeta libs tanto en el proyecto como en los proyectos de módulo / biblioteca relacionados.
Tuve el mismo error en un proyecto heredado. Mi culpa fue que la biblioteca de soporte se incluyó dos veces: una vez dentro de google-play-services lib, y otra como independiente.
Así es como lo arreglé:
BAD build.gradle:
dependencies {
compile files(''libs/android-support-v4.jar'')
compile files(''libs/core-2.2.jar'')
compile files(''libs/universal-image-loader-1.8.5-with-sources.jar'')
compile ''com.google.android.gms:play-services:3.2.65''
}
BUEN build.gradle:
dependencies {
// compile files(''libs/android-support-v4.jar'') // not needed
compile files(''libs/core-2.2.jar'')
compile files(''libs/universal-image-loader-1.8.5-with-sources.jar'')
compile ''com.google.android.gms:play-services:3.2.65''
}
Espero que ayude a alguien :-)
Tuve el 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.
Tuve el mismo problema al agregar react-native-palette
a mi proyecto, aquí está mi árbol de dependencias:
./gradlew app:dependencies
+--- project :react-native-palette
| +--- com.facebook.react:react-native:0.20.+ -> 0.44.2
| | +--- javax.inject:javax.inject:1
| | +--- com.android.support:appcompat-v7:23.0.1
| | | /--- com.android.support:support-v4:23.0.1
| | | /--- com.android.support:support-annotations:23.0.1 -> 24.2.1
...
| /--- com.android.support:palette-v7:24.+ -> 24.2.1
| +--- com.android.support:support-compat:24.2.1
| | /--- com.android.support:support-annotations:24.2.1
| /--- com.android.support:support-core-utils:24.2.1
| /--- com.android.support:support-compat:24.2.1 (*)
+--- com.android.support:appcompat-v7:23.0.1 (*)
/--- com.facebook.react:react-native:+ -> 0.44.2 (*)
Probé muchas soluciones y no pude arreglarlo, hasta que cambié la versión com.android.support:appcompat
en android/app/build.gradle
, deseo que esto pueda ayudar:
dependencies {
compile project('':react-native-palette'')
compile project('':react-native-image-picker'')
compile project('':react-native-camera'')
compile fileTree(dir: "libs", include: ["*.jar"])
// compile "com.android.support:appcompat-v7:23.0.1"
compile "com.android.support:appcompat-v7:24.2.1"
compile "com.facebook.react:react-native:+"
}
Parece que las entradas múltiples no son un gran problema, la discrepancia de versión es
Tuve el mismo problema y mi solución está cambiando la versión de soporte ''27. + ''(27.1.0) a ''27 .0.1''
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:
android {
defaultConfig {
...
multiDexEnabled = true
}
}
Más aquí Error: la ejecución falló para la tarea '': app: dexDebug''. > Comcomando terminado con un valor de salida no nulo 2
Un método similar resuelto de problema de dex
gradle.build contenía:
compile files(''libs/httpclient-4.2.1.jar'')
compile ''org.apache.httpcomponents:httpclient:4.5''
compile group: ''org.apache.httpcomponents'' , name: ''httpclient-android'' , version: ''4.3.5.1''
El problema se resolvió cuando quité
compile files(''libs/httpclient-4.2.1.jar'')
Mi gradle ahora se ve como:
apply plugin: ''com.android.application''
android {
compileSdkVersion 24
buildToolsVersion "24.0.3"
defaultConfig {
applicationId "com.mmm.ll"
minSdkVersion 16
targetSdkVersion 24
useLibrary ''org.apache.http.legacy''
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.txt''
}
}
}
dependencies {
compile ''com.google.android.gms:play-services:6.1.+''
compile files(''libs/PayPalAndroidSDK.jar'')
compile files(''libs/ksoap2-android-assembly-3.0.0-RC.4-jar-with-dependencies.jar'')
compile files(''libs/picasso-2.1.1.jar'')
compile files(''libs/gcm.jar'')
compile ''com.android.support:appcompat-v7:24.2.1''
compile ''org.apache.httpcomponents:httpclient:4.5''
compile group: ''org.apache.httpcomponents'' , name: ''httpclient-android'' , version: ''4.3.5.1''
}
Hubo una redundancia en el archivo JAR y el proyecto comple gradle
Busque los archivos de dependencia y archivos jar que tengan las mismas clases.
Y eliminar la redundancia.
Esto funcionó para mí.
Eliminar todos los archivos de la caché de Gradle solucionó mi problema.
en Linux:
cd ~/.gradle
rm -R -f *
Recibió el siguiente error
La ejecución falló para la tarea '': app: transformDexArchiveWithDexMergerForDebug''.
com.android.build.api.transform.TransformException: com.android.dex.DexException: Varios archivos dex definen Landroid / support / restricint / ConstraintSet $ 1
Arreglo: ve a Construir -> Limpiar Proyecto
Resolví un error similar agregando el siguiente fragmento de código a mi archivo build.gradle dentro del bloque de Android.
android {
dexOptions {
preDexLibraries = false
}
}
exclude module: ''support-v4''
No funcionaría para mí con una dependencia de proyecto, la única forma de hacerlo funcionar es a través de la siguiente sintaxis:
configurations {
dependencies {
compile(project('':Android-SDK'')) {
compile.exclude module: ''support-v4''
}
}
}
Donde: Android-SDK es el nombre de tu proyecto.