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
saeed shahini
la source

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

JuliusScript
la source
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'
A.Grandt
la source
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.

Steve Ganem
la source
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 .

Maurice Gavin
la source
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

raul
la source
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>
David Hackro
la source
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.

kcNeko
la source
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.

Ayman Mahgoub
la source
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'
Uma Achanta
la source
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.

Léonard Pineda
la source
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 .

lxknvlk
la source
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

Mohd. Jafar Iqbal khan
la source
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'
    //...
}
Tung Duong
la source
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'

Bishnu Das
la source
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.

goonerDroid
la source
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:+" />
Adexe Rivera
la source
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.

wqycsu
la source
0

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

Ronen Festinger
la source
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

SteelBytes
la source
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

x10sion
la source
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.

Dima Rowland
la source
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

Mosa
la source
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.

user6435056
la source
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.

Crime_Master_GoGo
la source
0

Incase 'Instant Run' est activé, puis désactivez-le.

Ravid Rinek
la source