No se puede combinar Dex-Android Studio 3.0
android-gradle android-studio-3.0 (20)
"todas las bibliotecas gsm" Gracias, ayudó a resolver mi problema, pero no solo las bibliotecas gsm, sino que todas las bibliotecas de google deben tener la misma versión. Tuve este error de dexing, porque com.android.support:recyclerview-v7 tenía una versión diferente a la de com.android.support:appcompat-v7
El estudio de Android muestra estas líneas con subrayado rojo en el archivo build.gradle.
Cuando actualicé mi Android Studio a 3.0 en el canal estable y ejecuté el proyecto, comencé a obtener el siguiente error.
Error:Execution failed for task '':app:transformDexArchiveWithExternalLibsDexMergerForDebug''.
com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Intenté limpiar y reconstruir el proyecto, pero no funcionó. Cualquier ayuda será apreciada.
Nivel de proyecto build.gradle
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath ''com.android.tools.build:gradle:3.0.0''
classpath ''com.google.gms:google-services:3.1.0''
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
google()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Nivel de aplicación build.gradle
apply plugin: ''com.android.application''
android {
compileSdkVersion 26
buildToolsVersion ''26.0.2''
defaultConfig {
applicationId "com.med.app"
minSdkVersion 21
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
resConfigs "auto"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
}
}
}
dependencies {
compile fileTree(dir: ''libs'', include: [''*.jar''])
androidTestCompile(''com.android.support.test.espresso:espresso-core:2.2.2'', {
exclude group: ''com.android.support'', module: ''support-annotations''
})
compile ''com.android.support.constraint:constraint-layout:1.0.2''
testCompile ''junit:junit:4.12''
//appcompat libraries
compile ''com.android.support:appcompat-v7:26.1.0''
compile ''com.android.support:design:26.1.0''
//butterknife
compile ''com.jakewharton:butterknife:8.8.1''
annotationProcessor ''com.jakewharton:butterknife-compiler:8.8.1''
//picasso
compile ''com.squareup.picasso:picasso:2.5.2''
//material edittext
compile ''com.rengwuxian.materialedittext:library:2.1.4''
// Retrofit & OkHttp & and OkHttpInterceptor & gson
compile ''com.squareup.retrofit2:retrofit:2.3.0''
compile ''com.squareup.retrofit2:converter-gson:2.3.0''
compile ''com.google.code.gson:gson:2.8.2''
compile ''com.squareup.okhttp3:logging-interceptor:3.8.0''
// FirebaseUI for Firebase Auth
compile ''com.firebaseui:firebase-ui-auth:3.1.0''
}
apply plugin: ''com.google.gms.google-services''
He intentado todas las respuestas dadas pero no puedo resolver este error. Por favor ayuda.
A veces ocurre este error, cuando el mismo archivo de la biblioteca .jar está presente en la carpeta "libs" y al mismo tiempo estamos tratando de obtener el código fuente agregando la línea "compilar" en el archivo gradle de la aplicación.
Cualquiera de esto, si lo eliminamos podemos superar este error.
Espero que esto pueda ser útil.
Añada esto a su gradle: implementación ''com.android.support:multidex:1.0.0''
Limpiar proyecto y luego reconstruir. Esto funciona
Añadir
// FirebaseUI for Firebase Auth
compile ''com.firebaseui:firebase-ui-auth:3.1.0''
compile ''com.google.android.gms:play-services-auth:11.4.2''
en lugar
// FirebaseUI for Firebase Auth
compile ''com.firebaseui:firebase-ui-auth:3.1.0''
La razón es porque "firebase-ui-auth" tiene una dependencia transitiva para play-services-auth y se debe usar con la versión relavent de google-play-service. Por favor vea esta explaination .
firebase-ui-auth
|--- com.google.firebase:firebase-auth
|--- com.google.android.gms:play-services-auth
Las versiones anteriores de gradle-build-tool no incluían dependencias transitivas y, por lo tanto, podían entrar en conflicto con las otras versiones de Play-Service.
Mi problema explicado y respondido (en caso de que alguien quiera saber)
Parece que si alguien actualiza a Android Studio 3.0 y actualiza la versión de la herramienta de compilación de gradle a "3.0.0", la compilación de dependencias se ha realizado de forma diferente a la de "2.3.3" anterior.
Recientemente me he encontrado con el mismo problema. Estaba usando dependencias mencionadas más abajo. Funcionó bien hasta la versión de la herramienta de compilación gradle (2.3.3).
implementation ''org.apache.httpcomponents:httpmime:4.3.6''
implementation ''org.apache.httpcomponents:httpclient-android:4.3.5.1''
Una vez que actualicé a gradle-build-version (3.0.0), me mostró el mismo error y después de indagar en el mismo, descubrí que una de las dependencias transitivas de httpmime
estaba en conflicto con el archivo ''httpclient-android'' que incluía.
Descripción
Permítanme explicar esto en detalle, antes, al ejecutar la aplicación con gradle-tool-version (2.3.3), estaba usando "httpclient-android" para buscar y usar la clase llamada org.apache.http.entity.ContentType.java
Ahora, si org.apache.http.entity.ContentType.java
las dependencias transitivas de org.apache.httpcomponents:httpmime:4.3.6
, sabrás que tiene org.apache.httpcomponents:httpcore:4.3.6
que también tiene el mismo paquete I quería usar PERO mientras compilaba o sincronizaba la compilación, excluía "org.apache.http.entity.ContentType.java" y, por lo tanto, debo agregar la dependencia a continuación que incluye ContentType.java
implementation ''org.apache.httpcomponents:httpclient-android:4.3.5.1''
y todo estaba funcionando bien después de eso.
Ahora, una vez que actualizo gradle-build-version a 3.0.0, el proceso de compilación parece haber cambiado y siempre incluirá todas las dependencias transitivas que tenga. Entonces, mientras compilaba la aplicación con el último estudio de Android con la versión 3.0.0 de gradle-build-tool, My ContentType.java
se compilaba dos veces desde ambos org.apache.httpcomponents:httpcore:4.3.6
(que es una dependencia transitiva implícita de httpmime) & org.apache.httpcomponents:httpclient-android:4.3.5.1
(que estaba usando antes)
Por lo tanto, para resolver este problema, solo necesito eliminar los org.apache.httpcomponents:httpclient-android:4.3.5.1
existentes org.apache.httpcomponents:httpclient-android:4.3.5.1
porque httpmime en sí mismo buscará la clase relavent necesaria para mi aplicación.
Solución: solo use las dependencias requeridas y elimine el httpclient-android
implementation ''org.apache.httpcomponents:httpmime:4.3.6''
Tenga en cuenta: este es el caso para mí, por lo que necesita profundizar en las clases con las que tiene un problema y debe aplicar las soluciones en consecuencia.
Espero que esto te encuentre bien con tu problema.
Al agregar este nuevo código en build.gradle (módulo de aplicación) funciona para mí
android {
defaultConfig {
multiDexEnabled true
}
}
dependencies {
androidTestImplementation ''com.android.support.test.espresso:espresso-core:3.0.1''
implementation ''com.android.support:support-v4:26.1.0''
}
Cambié el siguiente de 11.6.0 a 11.8.0 y funcionó.
compile ''com.google.android.gms:play-services-ads:11.6.0''
implementation ''com.google.android.gms:play-services-ads:11.8.0''
Creo que es porque difieren de la biblioteca del mismo niño de la biblioteca pero la versión es diferente, así que excluye la dependencia de una biblioteca como:
api (rootProject.ext.dependencies["bindingRecyclerView"]) {
exclude group: ''com.android.support''
}
En mi caso, tuve que hacer tres cosas:
Como estaba usando Firebase, asegúrese de que los servicios de firebase y google play tengan la misma versión. Inicialmente, los servicios de reproducción tenían una versión más baja. Principalmente la versión 12.0.1 ayudó
Establecer esto en el nivel de la aplicación build.gradle
android { multiDexEnabled true }
De nuevo en el nivel de la aplicación build.gradle, agregue
compileOptions{ sourceCompatibility 1.8 targetCompatibility 1.8 }
En primer lugar habilité multidex como se sugirió en comentarios anteriores.
Luego, si el error continúa, abra la consola de Gradle (haga clic en el icono "Mostrar salida de consola" a la izquierda de la sección "Mensajes") y haga clic en el enlace para recompilar con las opciones de depuración / información / pila. Esto mostrará más detalles sobre el error.
En mi caso, el error "Unable to merge dex" fue causado por entradas duplicadas en "com.jakewharton.picasso: picasso2-okhttp3-downloader: 1.1.0".
Eliminé manualmente la biblioteca en conflicto de mi proyecto y ejecuté el "Proyecto de reconstrucción" (forzando a volver a cargar la biblioteca). Esto resolvió el problema.
En su lugar, estaba experimentando el mismo error con la base de datos de UI de Firebase. Incluso después de habilitar MultiDex como se sugirió en las otras respuestas, todavía recibía el error. Luego me enteré de la necesidad de que la UI de Firebase y la base de datos de Firebase tengan las mismas versiones correspondientes que figuran en el repositorio GitHub de la UI de Firebase.
Esto también podría ser demasiado tarde, pero creo que también tengo una respuesta. En función de mis pruebas recientes, al compilar la aplicación, asegúrese de no tener un archivo jar y una ''implementation''(''compile'' for 3.0.1 > gradle)
del mismo paquete en el mismo proyecto. En mi caso, tuve la implementation ''org.jsoup:jsoup:1.11.2''
y Jsoup
jar en el mismo proyecto. Error de novato pero, lo aprendí.
Hice exacta como la sugerencia en la captura de pantalla a continuación, cambió 11.0.4 a 11.8.0
compile ''com.google.android.gms:play-services-base:11.8.0''
compile ''com.google.android.gms:play-services:11.8.0''
funciona bien
Para aquellos que todavía están luchando con esto más recientemente y han agregado componentes. Lo que me causó fue agregar:
compile ''android.arch.lifecycle: extensiones: 1.0.0'' annotationProcessor ''android.arch.lifecycle: compilador: 1.0.0''
Lo que lo solucionó fue actualizarlo a
compile ''android.arch.lifecycle: extensiones: 1.1.1'' annotationProcessor ''android.arch.lifecycle: compilador: 1.1.1''
Espero que ayude.
Parece que este error tiene muchos escenarios. En mi caso fue una compilación de 1.8 java en build.gradle
(aplicación):
compileOptions {
targetCompatibility 1.8
sourceCompatibility 1.8
}
Eliminé y el error desapareció
Simplemente cambie su ruta de clases a:
classpath ''com.android.tools.build:gradle:2.3.3''
y sincroniza tu Gradle.
Espero que esto ayude
Tuve este error:
com.android.builder.dexing.DexArchiveMergerException: no se puede fusionar dex
y terminé cambiando mi gradle para solucionar este problema.
app / build.gradle
android {
compileSdkVersion 25
//buildToolsVersion ''26.0.2''
buildToolsVersion ''25.0.3''//<< Changed back to old version before my studio 3.0 update
defaultConfig { ....
. / build.gradle
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath ''com.android.tools.build:gradle:2.3.3'' //<< Changed back to old version before my studio 3.0 update
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
No es ideal ya que está saliendo, pero es algo que funcionó para mí y debería llevarme hasta que se publique un posible parche.
Verifique las dependencias en su build.gradle (aplicación) si está utilizando 2 (o más) bibliotecas con el mismo nombre y una versión diferente. Por ejemplo (en mi caso):
implementation files(''src/main/libs/support-v4-24.1.1.jar'')
implementation ''com.android.support:support-v4:27.0.2''
Retire uno, luego limpie y reconstruya. También tenga en cuenta que las dependencias están fuera de buildscript .
este es mi proyecto gradle
android {compileSdkVersion 26 buildToolsVersion "27.0.3"
defaultConfig {
applicationId "net.mobilegts.candyjump"
minSdkVersion 14
targetSdkVersion 23
ndk {
moduleName "player_shared"
}
}
sourceSets {
main {
jni.srcDirs = []
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.txt''
}
}
}
tengo el mismo problema lo resolví puesto:
classpath ''com.google.gms:google-services:3.0.0''
en buildscript-> dependencias
build.gradle
en mi archivo tengo:
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath ''com.android.tools.build:gradle:3.0.0''
classpath ''com.google.gms:google-services:3.0.0''
}
}
android {
defaultConfig {
multiDexEnabled true
}
}
agregue esta línea al archivo :gradle