com.android.build.transform.api.TransformException


158

J'essaie d'intégrer la connexion Google, dans mon application, j'ai ajouté ces bibliothèques:

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

Ajoutez également ceci au niveau de construction du projet:

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

Ajoutez également un plugin au gradle de construction de l'application:

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

puis ajoutez les autorisations requises, mais lorsque j'essaie d'exécuter mon application, j'ai reçu cette erreur:

    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

Réponses:


312

Essayez d'ajouter multiDexEnabled trueà votre fichier build.gradle d' application .

 defaultConfig {
    multiDexEnabled true
}

ÉDITER:

Essayez d' abord la réponse de Steve . Si cela se produit fréquemment ou si la première étape n'a pas aidé, cela multiDexEnabledpeut aider. Pour ceux qui aiment creuser plus profondément, voici quelques problèmes similaires (avec plus de réponses):

: app: dexDebug ExecException terminé avec une valeur de sortie différente de zéro 2

Erreur: l'exécution a échoué pour la tâche «: app: dexDebug». com.android.ide.common.process.ProcessException


3
N'a pas travaillé pour moi. Réponse de Steve - Le nettoyage a fait l'affaire. Je viens de passer à l'AS1.5 Preview
Scott

6
Pour être juste, vous devez toujours vérifier si un problème peut être résolu par le nettoyage. Je suis convaincu que cela aidera ceux à qui le nettoyage n'a pas fait l'affaire.
JuliusScript

les deux ne m'ont pas aidé - mais redémarrer AS a finalement fait l'affaire :)
Maciej Boguta

aucun de ceux-ci ne m'a aidé, mais cela a commencé à fonctionner après le redémarrage de AS
Maciej Boguta

1
Je vous conseillerais également de consulter la réponse d'A Grandt, ci-dessous ( stackoverflow.com/a/33690032/1617737 ) avant de vous lancer avec cette solution.
ban-geoengineering

146

Une autre chose à surveiller, c'est que vous n'utilisez pas

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

Cela importera TOUS les services de jeu, et il ne faudra qu'un peu plus qu'un bonjour le monde pour dépasser la limite de 65535 méthodes d'un seul APK dex.

Spécifiez toujours uniquement les services dont vous avez besoin, par exemple:

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'

10
Tu es le meilleur! Cela a résolu mon problème. La reconstruction n'aide pas dans mon cas, comme mentionné dans de nombreuses solutions. Comme vous l'avez mentionné, la bibliothèque des services Google Play comporte de nombreux sous - composants et ils doivent être importés comme vous l'avez dit - un par un. Merci encore une fois!
Ivan Caravanio

2
J'ai eu ce problème ces derniers jours. Je pensais n'avoir choisi que ce dont j'avais besoin. Mais, bas et voilà, après des heures de recherche, j'importais tous les services de jeu alors que tout ce que je voulais, c'était des publicités de services de lecture. Vérifiez certainement vos dépendances Gradle!
MCLLC

@ A.Grandt pourriez-vous ajouter le lien qu'Ivan a donné dans votre réponse? Il contient une liste de noms de tous les sous-composants et devrait faire partie de la réponse, car c'est la prochaine étape que tout le monde doit franchir.
Murmel

137

Je devais juste nettoyer mon projet, puis il s'est construit avec succès par la suite.


4
Merci! Cela fonctionne parfaitement! La réponse acceptée serait étrange car mon projet est loin d'atteindre la limite de méthode de 65K (ce qui nécessiterait du multidex).
Louis CAD

4
Oui, le nettoyage était la voie à suivre. AS 1.4
Felipe Caldas

Si vous avez des modules de bibliothèque, nettoyez tous les modules du projet pour qu'il fonctionne. Le nettoyage uniquement des modules individuels ne fonctionnait pas pour moi. Nettoyez le projet ENTIER.
Akh

Quelqu'un peut-il me dire comment nettoyer le projet? J'ai essayé beaucoup de "combinaisons" et rien ne fonctionne. Je vois que tout le monde dit "propre", mais je ne sais pas comment. THX.
Alberto Rubio le

@AlbertoRubio, sous Construire> Nettoyer le projet dans la barre d'outils AS.
Chantell Osejo

23

Cette erreur a commencé à apparaître pour moi lorsque j'ai ajouté de nouvelles méthodes à mon projet. Je savais que j'étais loin de la limite de la méthode 65k et que je ne voulais pas activer le support multiDex pour mon projet si je pouvais l'aider.

Je l'ai résolu en augmentant la mémoire disponible pour la :app:transformClassesForDexForDebugtâche. J'ai fait cela en spécifiant javaMaxHeapSize dans gradle.build.

gradle.build

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

J'ai essayé ceci après n'avoir eu aucun succès avec d'autres solutions courantes à ce problème:

  • Lancer un projet clean
  • Supprimer manuellement les répertoires /app/buildet /buildde mon projet
  • Invalidation du cache Gradle et redémarrage d'Android Studio

Erreur

Erreur: l'exécution a échoué pour la tâche> ': app: transformClassesWithDexForDebug'. com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Processus 'commande' /Library/Java/JavaVirtualMachines/jdk1.8.0_45. jdk / Contents / Home / bin / java '' terminé avec une valeur de sortie non nulle 1

Remarque: l'augmentation de la mémoire disponible pour la tâche DEX peut entraîner des problèmes de performances sur les systèmes avec une liaison mémoire inférieure .


Cela a fonctionné pour moi, juste pour spécifier la taille maximale du tas résoudra le problème, merci Maurice
Zeyad Assem

8

J'ai également rencontré un problème similaire dans Android Studio 1.5.1 et gradle 1.5.0. Je dois simplement supprimer les bibliothèques indésirables des dépendances qui peuvent être automatiquement ajoutées dans le fichier build.gradle de mon application. L'un était: compilez 'com.google.android.gms: play-services: 8.4.0'. Donc, pour les meilleures pratiques, essayez d'inclure uniquement une bibliothèque de services de lecture spécifiques, comme pour les annonces, inclure uniquement

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

Bien que

defaultConfig {
    multiDexEnabled true
}

cela résoudra également le problème, mais fournit de nombreuses notes dans la console gradle, ce qui rend difficile la recherche des autres problèmes réels pendant la construction


Réduire mon utilisation de l'API google aux cartes play-services-maps a fait l'affaire. Voici la répartition officielle par Google des différents composants de l'API play-services: developer.google.com/android/guides/…
jperl

4

vous pouvez voir la documentation d' 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>

3

J'utilise AS 1.5.1 et j'ai rencontré le même problème. Mais nettoyer le projet ne suffit pas, alors j'ai essayé quelque chose.

  • projet propre
  • redémarrer AS
  • Projet de synchronisation

Cela a fonctionné avec moi, alors j'espère que cela aide.


3
Cela ne servirait à rien pour les projets qui ont dépassé la limite de la méthode Dex 64k.
IgorGanapolsky

3

À mon cas, changez buildToolsVersion de "24" à "23.0.2", résolvez le problème.


2

Dans mon cas, l'exception s'est produite car toutes les extensions de service Google Play ne sont pas avec la même version comme suit

 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'

Cela a fonctionné quand j'ai changé cela en

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'

1
Je ne l' ai pas revue à toutes les réponses et je ne vois pas le vôtre, alors ... j'ai découvert que c'était mon cas environ une heure plus tard: /
denispyr

2

Je l'ai résolu avec le suivant:

J'ai configuré le multidex

Dans build.gradle, vous devez ajouter le suivant.

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'
...
}

Ajoutez le suivant dans local.properties

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

Après cela, dans la classe Application, vous devez également ajouter le 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);
   }
}

N'oubliez pas d'ajouter le code de ligne dans Manifest.xml

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

Voilà, c'était suffisant pour résoudre le bogue: l'exécution a échoué pour la tâche ': app: transformClassesWithDexForDebug. Vérifiez très bien dans build.gradle avec javaMaxHeapSize "2g" et les local.properties org.gradle.jvmargs = -Xmx2048m sont de 2 gigaoctets.


2
Veuillez publier en anglais uniquement. Cela semble être une bonne réponse, ce serait dommage qu'elle soit supprimée car elle n'est pas en anglais.
Tunaki

1

J'ai eu le même problème lorsque je suis revenu à l'ancienne version via git, et cette version avait une bibliothèque .jar précédente d'une api tierce, et pour une raison quelconque, il s'est avéré que les deux jar du même sdk, juste des versions différentes étaient dans le dossier / libs .


1

Supprimez d'abord les fichiers intermédiaires VOTRE DOSSIER D'APPLICATION \ app \ build \ intermediates OU Nettoyez votre projet, puis reconstruisez-le.

Puis ajouter

multiDexEnabled true

c'est à dire

defaultConfig {
        multiDexEnabled true
}

C'est du travail pour moi


1

J'ai résolu ce problème en modifiant pour utiliser la dernière buildToolsVersion

android {
    //...
    buildToolsVersion '26.0.2' // change from '23.0.2'
    //...
}

1

Une réponse utile si tout ce qui précède n'a pas fonctionné pour vous.

Accédez au fichier d'évaluation de votre application,

Vérifiez que toutes les versions de dépendance sont mentionnées avec le code de version approprié plutôt que toute valeur relative comme (com.example.demo: +)

Précédent - implémentation 'com.google.api-client: google-api-client-android: +'

Après - implémentation 'com.google.api-client: google-api-client-android: 1.30.0'


0

Si vous utilisez la dernière version de Gradle classpath 'com.android.tools.build:gradle:1.5.0' and classpath 'com.google.gms:google-services:1.4.0-beta3', essayez de mettre à jour le dernier référentiel de support à partir du gestionnaire de SDK et reconstruisez l'ensemble du projet.


0

Si vous avez besoin d'ajouter cette référence pour le plugin cordova, ajoutez la ligne suivante dans votre fichier plugin.xml.

<framework src="com.android.support:support-v4:+" />

0

Si les différentes dépendances ont le même fichier jar, cette erreur de génération est également provoquée.

Par exemple:

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

Si "library1" et "library2" a un même fichier nommé xxx.jar, cela fera une telle erreur.


0

Cela m'est arrivé à cause d'une fuite de mémoire Eclipse. J'ai dû redémarrer mon ordinateur.


0

J'ai changé quelques png et le numéro de build dans le gradle et maintenant j'obtiens ceci. Aucune quantité de nettoyage et de redémarrage n'a aidé. La désactivation d'Instant Run a résolu le problème pour moi. YMMV


0

J'avais la même option et dès que j'ai désactivé Instant run, cela fonctionnait bien sur mon appareil API16, mais sur l'appareil API24, cela fonctionnait bien avec Instant run.

J'espère que cela aide quelqu'un ayant le même problème


0

Allez simplement dans Construire - Modifier les types de build - Onglet Propriétés - Version du type de build et rétrograder vers la version 23.0.1. Cliquez sur OK. Cela fonctionne pour Android Studio 1.5. Cela a fonctionné pour moi.


0

la réponse d'écriture est dans gradle mettez defaultConfig {multiDexEnabled true} puis le nom de l'application dans le manifeste android: name = "android.support.multidex.MultiDexApplication" souhaite que cette réponse soit infernale pour quelqu'un


0

ce code a résolu le problème

defaultConfig {
        multiDexEnabled true
}

Pour découvrir le moyen le plus simple de mettre en œuvre la connexion google, visitez: google sign in android

Essayez aussi

dexOptions {
        javaMaxHeapSize "4g" 
    }

Conservez également le même numéro de version pour différents services.


0

J'ai résolu ce problème en ajoutant: Dans build.gradle:

defaultConfig {
    multiDexEnabled true
}

dans local.properties,

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

mentionner la dépendance:

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

Nettoyez et reconstruisez.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.