com.android.build.transform.api.TransformException

158

Estoy tratando de integrar el inicio de sesión de Google, en mi aplicación, agregué estas bibliotecas:

compile 'com.google.android.gms:play-services-identity:8.1.0'
compile 'com.google.android.gms:play-services-plus:8.1.0'

Agregue también esto al proyecto build gradle:

classpath 'com.google.gms:google-services:1.4.0-beta3'

También agregue el complemento a la aplicación de construcción gradle:

apply plugin: 'com.google.gms.google-services'

luego agrego los permisos requeridos, pero cuando intento ejecutar mi aplicación, recibo este error:

    Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
    com.android.build.transform.api.TransformException: com.android.ide.common.process.ProcessException: 
    org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0\bin\java.exe'' finished with non-zero exit value 2
Saeed Shahini
fuente

Respuestas:

312

Intente agregar multiDexEnabled truea su aplicación el archivo build.gradle .

 defaultConfig {
    multiDexEnabled true
}

EDITAR:

Prueba la respuesta de Steve primero. En caso de que ocurra con frecuencia o el primer paso no ayudó, multiDexEnabledpodría ayudar. Para aquellos que aman profundizar aquí, hay un par de problemas similares (con más respuestas):

: app: dexDebug ExecException finalizó con un valor de salida distinto de cero 2

Error: Falló la ejecución de la tarea ': aplicación: dexDebug'. com.android.ide.common.process.ProcessException

JuliusScript
fuente
3
No funciono para mi. La respuesta de Steve: la limpieza hizo el truco. Acabo de actualizar a la vista previa AS1.5
Scott
66
Para ser justos, siempre debe verificar si un problema puede resolverse mediante la limpieza. Estoy convencido de que esto ayudará a aquellos a quienes la limpieza no les sirvió.
JuliusScript el
ambos no me ayudaron, pero reiniciar AS finalmente funcionó :)
Maciej Boguta
ninguno de estos me ayudó, pero comenzó a funcionar después de reiniciar AS
Maciej Boguta
1
También le aconsejaría que revise la respuesta de A Grandt, a continuación ( stackoverflow.com/a/33690032/1617737 ) antes de comenzar con esta solución.
prohibición de geoingeniería
146

Otra cosa a tener en cuenta es que no usas

compile 'com.google.android.gms:play-services:8.3.0'

Eso importará TODOS los servicios de juego, y solo tomará poco más que un mundo hola para superar el límite del método 65535 de un solo APK dex.

Siempre especifique solo los servicios que necesita, por ejemplo:

compile 'com.google.android.gms:play-services-identity:8.3.0'
compile 'com.google.android.gms:play-services-plus:8.3.0'
compile 'com.google.android.gms:play-services-gcm:8.3.0'
A.Grandt
fuente
10
¡Eress el mejor! Esto resolvió mi problema. La reconstrucción no ayuda en mi caso como se menciona en muchas de las soluciones. Como mencionó, la biblioteca de Google Play Services tiene muchos subcomponentes y deben importarse tal como lo ha dicho, uno por uno. ¡Muchas gracias de nuevo!
Ivan Caravanio
2
Tuve este problema en los últimos días. Pensé que solo había elegido lo que necesitaba. Pero, claro, después de horas de mirar, estaba importando todos los servicios de juego cuando todo lo que quería era anuncios de servicios de juego. Definitivamente revisa tus dependencias de gradle personas!
MCLLC
@ A.Grandt, ¿podría agregar el enlace que Ivan le dio a su respuesta? Contiene una lista de nombres de todos los subcomponentes y debería ser parte de la respuesta, porque es el siguiente paso que todos deben tomar.
Murmel
137

Solo tuve que limpiar mi proyecto y luego se construyó con éxito después.

Steve Ganem
fuente
44
¡Gracias! ¡Funciona perfectamente! La respuesta aceptada sería extraña ya que mi proyecto está lejos de alcanzar el límite de método de 65K (que necesitaría multidex).
Louis CAD
44
Sí, la limpieza era el camino a seguir. AS 1.4
Felipe Caldas
Si tiene módulos de biblioteca, limpie todos los módulos del proyecto para que funcione. Limpiar solo módulos individuales no funcionó para mí. Limpiar TODO el proyecto.
Akh
¿Alguien puede decirme cómo limpio el proyecto? He estado probando muchas "combinaciones" y nada funciona. Veo que todos dicen "limpio", pero no sé cómo. Gracias.
Alberto Rubio
@AlbertoRubio, en Build> Clean Project en la barra de herramientas AS.
Chantell Osejo
23

Este error comenzó a aparecer para mí cuando agregué algunos métodos nuevos a mi proyecto. Sabía que no estaba cerca del límite del método de 65k y no quería habilitar el soporte multiDex para mi proyecto si pudiera evitarlo.

Lo resolví aumentando la memoria disponible para la :app:transformClassesForDexForDebugtarea. Hice esto especificando javaMaxHeapSize en gradle.build.

gradle.build

android {
    ...
    dexOptions {
        javaMaxHeapSize "4g" //specify the heap size for the dex process
    }
}

Intenté esto después de no haber tenido éxito con otras soluciones comunes a este problema:

  • Ejecutando un proyecto clean
  • Eliminar manualmente los directorios /app/buildy /buildde mi proyecto
  • Invalidar Gradle Cache y reiniciar Android Studio

Error

Error: Error de ejecución para la tarea> ': aplicación: transformClassesWithDexForDebug'. com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command' /Library/Java/JavaVirtualMachines/jdk1.8.0_45. jdk / Contenido / Inicio / bin / java '' terminado con un valor de salida distinto de cero 1

Nota: aumentar la memoria disponible para la tarea DEX puede causar problemas de rendimiento en sistemas con un enlace de memoria inferior .

Maurice Gavin
fuente
Esto funcionó para mí, solo especificar el tamaño máximo de
almacenamiento
8

También enfrenté un problema similar en Android Studio 1.5.1 y gradle 1.5.0. Solo tengo que eliminar las bibliotecas no deseadas de las dependencias que pueden agregarse automáticamente en el archivo build.gradle de mi aplicación. Uno fue: compile 'com.google.android.gms: play-services: 8.4.0'. Entonces, para las mejores prácticas, intente incluir solo una biblioteca de servicios de reproducción específica, como para los anuncios que solo incluyen

dependencies {
    compile 'com.google.android.gms:play-services-ads:8.4.0'
}

A pesar de que

defaultConfig {
    multiDexEnabled true
}

esto también resolverá el problema, pero proporciona muchas notas en la consola gradle, lo que hace que sea confuso encontrar los otros problemas reales durante la compilación

raul
fuente
Limitar mi uso de la API de Google a solo play-services-maps hizo el truco. Aquí está el desglose oficial de Google de los diversos componentes en la API de servicios de juego: developers.google.com/android/guides/…
jperl
4

puedes ver la documentación de Android

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.0"

    defaultConfig {
        ...
        minSdkVersion 14
        targetSdkVersion 21
        ...

        // Enabling multidex support.
        multiDexEnabled true
    }
    ...
}

dependencies {
  compile 'com.android.support:multidex:1.0.0'
}

Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.multidex.myapplication">
    <application
        ...
        android:name="android.support.multidex.MultiDexApplication">
        ...
    </application>
</manifest>
David Hackro
fuente
3

Estoy usando AS 1.5.1 y encontré el mismo problema. Pero simplemente limpiar el proyecto no lo hará, así que intenté algo.

  • proyecto limpio
  • reiniciar AS
  • Proyecto de sincronización

Esto funcionó conmigo, así que espero que esto ayude.

kcNeko
fuente
3
Esto sería inútil para proyectos que hayan excedido el límite del método Dex de 64k.
IgorGanapolsky
3

En mi caso, cambie buildToolsVersion de "24" a "23.0.2", resuelva el problema.

Ayman Mahgoub
fuente
2

En mi caso, la excepción se produjo porque todas las extensiones de servicio de Google Play no tienen la misma versión de la siguiente manera

 compile 'com.google.android.gms:play-services-plus:9.8.0'
 compile 'com.google.android.gms:play-services-appinvite:9.8.0'
 compile 'com.google.android.gms:play-services-analytics:8.3.0'

Funcionó cuando cambié esto a

compile 'com.google.android.gms:play-services-plus:9.8.0'
 compile 'com.google.android.gms:play-services-appinvite:9.8.0'
 compile 'com.google.android.gms:play-services-analytics:9.8.0'
Uma Achanta
fuente
1
No busqué todas las respuestas y no vi las suyas, así que ... descubrí que este era mi caso aproximadamente una hora después: /
denispyr
2

Lo resolví con el siguiente:

Configuré multidex

En build.gradle necesita agregar el siguiente.

android {
...
   defaultConfig {
       ...
       // Enabling multidex support.
       multiDexEnabled true
       ...
   }
   dexOptions {
      incremental true
      maxProcessCount 4 // this is the default value
      javaMaxHeapSize "2g"
   }
...
}
dependencies {
...
   compile 'com.android.support:multidex:1.0.1'
...
}

Agregue el siguiente en local.properties

org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

Después de eso en la clase de aplicación, también debe agregar Multidex.

 public class MyApplication extends MultiDexApplication {

   @Override
   public void onCreate() {
       super.onCreate();
       //mas codigo
   }

   @Override
   protected void attachBaseContext(Context base) {
       super.attachBaseContext(base);
       MultiDex.install(this);
   }
}

No olvide agregar el código de línea en Manifest.xml

<application
    ...
    android:name=".MyApplication"
    ...
/>

Eso es suficiente para resolver el error: Error de ejecución de la tarea ': aplicación: transformClassesWithDexForDebug. Compruebe muy bien en build.gradle con javaMaxHeapSize "2g" y las local.properties org.gradle.jvmargs = -Xmx2048m son de 2 gigabytes.

Leonardo Pineda
fuente
2
Por favor, publique solo en inglés. Esto parece una buena respuesta, sería una pena que se elimine porque no está en inglés.
Tunaki
1

Tuve el mismo problema cuando volví a la versión anterior a través de git, y esa versión tenía una biblioteca .jar anterior de una API de terceros, y por alguna razón resultó que ambos jar del mismo sdk, solo versiones diferentes estaban en la carpeta / libs .

lxknvlk
fuente
1

Primero elimine los archivos intermedios SU CARPETA DE APLICACIONES \ app \ build \ intermediarios O Limpie su proyecto y luego reconstruya.

Luego añadir

multiDexEnabled true

es decir

defaultConfig {
        multiDexEnabled true
}

Es trabajo para mi

Mohd Jafar Iqbal khan
fuente
1

Resolví este problema mediante el cambio para usar el último buildToolsVersion

android {
    //...
    buildToolsVersion '26.0.2' // change from '23.0.2'
    //...
}
Tung Duong
fuente
1

Una respuesta útil si todo lo anterior no funcionó para usted.

Vaya al archivo gradle de su aplicación,

Verifique que todas las versiones de dependencia se mencionen con el código de versión adecuado en lugar de cualquier valor relativo como (com.example.demo: +)

Anterior - implementación 'com.google.api-client: google-api-client-android: +'

Después - implementación 'com.google.api-client: google-api-client-android: 1.30.0'

Bishnu Das
fuente
0

Si está utilizando la última versión de Gradle, es decir classpath 'com.android.tools.build:gradle:1.5.0' and classpath 'com.google.gms:google-services:1.4.0-beta3', intente actualizar el último repositorio de soporte desde el administrador de SDK y reconstruya todo el proyecto.

goonerDroid
fuente
0

Si necesita agregar esta referencia para el complemento cordova, agregue la siguiente línea en su archivo plugin.xml.

<framework src="com.android.support:support-v4:+" />
Adexe Rivera
fuente
0

Si las diferentes dependencias tienen un mismo jar también causan este error de compilación.

Por ejemplo:

compile('com.a.b:library1');
compile('com.c.d:library2');

Si "library1" y "library2" tienen un mismo jar llamado xxx.jar, esto generará dicho error.

wqycsu
fuente
0

Me pasó por la pérdida de memoria de Eclipse. Tuve que reiniciar mi computadora.

Ronen Festinger
fuente
0

Cambié un par de png y el número de compilación en el gradle y ahora obtengo esto. Ninguna cantidad de limpieza y reinicio ayudó. Desactivar Instant Run lo arregló para mí. YMMV

SteelBytes
fuente
0

Tenía la misma opción y tan pronto como apagué la ejecución instantánea, funcionó bien en mi dispositivo API16, pero en el dispositivo API24 funcionó bien con la ejecución instantánea.

Espero que esto ayude a alguien que tiene el mismo problema

x10sion
fuente
0

Simplemente vaya a Compilar - Editar tipos de compilación - Pestaña Propiedades - Versión de tipo de compilación y rebaje a la versión 23.0.1. Haga clic en Aceptar. Esto funciona para Android Studio 1.5. Funcionó para mi.

Dima Rowland
fuente
0

la respuesta de escritura está en gradle put defaultConfig {multiDexEnabled true} y luego el nombre de la aplicación en manifiesto android: name = "android.support.multidex.MultiDexApplication" deseo que esta respuesta sea muy útil para alguien

Mosa
fuente
0

este código solucionó el problema

defaultConfig {
        multiDexEnabled true
}

Para ver la manera más fácil de implementar el inicio de sesión de Google, visite: inicio de sesión de Google Android

Intenta también

dexOptions {
        javaMaxHeapSize "4g" 
    }

También mantenga el mismo número de versión para diferentes servicios.

usuario6435056
fuente
0

Resolví este problema agregando: En build.gradle:

defaultConfig {
    multiDexEnabled true
}

en local.properties,

org.gradle.jvmargs=-XX\:MaxHeapSize\=512m -Xmx512m

mencionar dependencia:

compile 'com.android.support:multidex:1.0.1'

Limpiar y reconstruir.

Crime_Master_GoGo
fuente
0

En caso de que 'Instant Run' esté habilitado, simplemente deshabilítelo.

Ravid Rinek
fuente