com.android.build.transform.api.TransformException


158

Ich versuche, Google Sign-In zu integrieren. In meine App habe ich folgende Bibliotheken hinzugefügt:

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

Fügen Sie dies auch zu Project Build Gradle hinzu:

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

Fügen Sie auch ein Plugin zum App Build Gradle hinzu:

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

Fügen Sie dann die erforderlichen Berechtigungen hinzu. Beim Versuch, meine App auszuführen, wurde folgende Fehlermeldung angezeigt:

    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

Antworten:


312

Versuchen Sie multiDexEnabled true, Ihrer App die Datei build.gradle hinzuzufügen .

 defaultConfig {
    multiDexEnabled true
}

BEARBEITEN:

Versuchen Sie zuerst Steves Antwort . Falls es häufig vorkommt oder der erste Schritt nicht geholfen hat, multiDexEnabledkönnte dies helfen. Für diejenigen, die es lieben, tiefer zu graben, gibt es hier einige ähnliche Probleme (mit mehr Antworten):

: app: dexDebug ExecException wurde mit einem Exit-Wert ungleich Null 2 ​​beendet

Fehler: Ausführung für Task ': app: dexDebug' fehlgeschlagen. com.android.ide.common.process.ProcessException


3
Hat bei mir nicht funktioniert. Steves Antwort - Die Reinigung hat es geschafft. Ich habe gerade auf AS1.5 Preview
Scott

6
Um fair zu sein, sollten Sie immer prüfen, ob ein Problem durch Reinigung gelöst werden kann. Ich bin überzeugt, dass dies denjenigen helfen wird, denen die Reinigung nicht geholfen hat.
JuliusScript

Beides hat mir nicht geholfen - aber der Neustart von AS hat es endlich geschafft :)
Maciej Boguta


1
Ich würde auch empfehlen, die Antwort von A Grandt unten ( stackoverflow.com/a/33690032/1617737 ) zu lesen, bevor Sie mit dieser Lösung beginnen.
Ban-Geoengineering

146

Eine andere Sache, auf die Sie achten sollten, ist, dass Sie nicht verwenden

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

Dadurch werden ALLE Spieldienste importiert, und es dauert nur wenig mehr als eine Hallo-Welt, um das 65535-Methodenlimit einer einzelnen Dex-APK zu überschreiten.

Geben Sie immer nur die Dienste an, die Sie benötigen, zum Beispiel:

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
Du bist der beste! Dies löste mein Problem. Der Wiederaufbau hilft in meinem Fall nicht, wie in vielen Lösungen erwähnt. Wie Sie bereits erwähnt haben, enthält die Google Play Services-Bibliothek viele Unterkomponenten, die nach Ihren Wünschen einzeln importiert werden sollten. Vielen Dank nochmal!
Ivan Caravanio

2
Ich hatte dieses Problem in den letzten Tagen. Ich dachte, ich hätte nur das ausgewählt, was ich brauche. Aber siehe da, nach stundenlangem Suchen importierte ich alle Play-Services, als ich nur Play-Services-Anzeigen wollte. Überprüfen Sie auf jeden Fall Ihre Gradle-Abhängigkeiten Menschen!
MCLLC

@ A.Grandt Könntest du den Link, den Ivan gegeben hat, in deine Antwort aufnehmen? Es enthält eine Liste mit Namen aller Unterkomponenten und sollte Teil der Antwort sein, da dies der nächste Schritt ist, den jeder unternehmen muss.
Murmel

137

Ich musste nur mein Projekt bereinigen und es wurde anschließend erfolgreich erstellt.


4
Vielen Dank! Es funktioniert einwandfrei! Die akzeptierte Antwort wäre seltsam, da mein Projekt weit davon entfernt ist, das 65K-Methodenlimit zu erreichen (für das Multidex erforderlich wäre).
Louis CAD

4
Ja, Putzen war der richtige Weg. AS 1.4
Felipe Caldas

Wenn Sie über Bibliotheksmodule verfügen, bereinigen Sie alle Module im gesamten Projekt, damit sie funktionieren. Das Reinigen nur einzelner Module hat bei mir nicht funktioniert. Reinigen Sie das GESAMTE Projekt.
Akh

Kann mir jemand sagen, wie ich das Projekt bereinige? Ich habe viele "Kombinationen" ausprobiert und nichts funktioniert. Ich sehe, dass jeder "sauber" sagt, aber ich weiß nicht wie. Vielen Dank.
Alberto Rubio

@AlbertoRubio unter Erstellen> Projekt bereinigen in der AS-Symbolleiste.
Chantell Osejo

23

Dieser Fehler trat bei mir auf, als ich meinem Projekt einige neue Methoden hinzufügte. Ich wusste, dass ich nicht annähernd das 65k-Methodenlimit erreicht hatte und wollte die MultiDex-Unterstützung für mein Projekt nicht aktivieren, wenn ich helfen könnte.

Ich habe es behoben, indem ich den für die :app:transformClassesForDexForDebugAufgabe verfügbaren Speicher vergrößert habe . Ich habe dies getan, indem ich javaMaxHeapSize in angegeben habe gradle.build.

gradle.build

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

Ich habe es versucht, nachdem ich mit anderen gängigen Lösungen für dieses Problem keinen Erfolg hatte:

  • Ein Projekt ausführen clean
  • Manuelles Löschen der Verzeichnisse /app/buildund /buildaus meinem Projekt
  • Gradle Cache ungültig machen und Android Studio neu starten

Error

Fehler: Ausführung für Aufgabe> ': app: transformClassesWithDexForDebug' fehlgeschlagen. com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Prozess 'Befehl' /Library/Java/JavaVirtualMachines/jdk1.8.0_45. jdk / Contents / Home / bin / java '' beendet mit einem Exit-Wert ungleich Null 1

Hinweis: Der Speicher zur Verfügung, die DEX Aufgabe zunehmenden Leistungsprobleme auf Systeme mit niedrigeren Speichern verursachen - Link .


Dies funktionierte für mich, nur um die maximale Heap-Größe anzugeben, wird das Problem gelöst, danke Maurice
Zeyad Assem

8

Ich hatte auch ein ähnliches Problem in Android Studio 1.5.1 und Gradle 1.5.0. Ich muss nur unerwünschte Bibliotheken aus Abhängigkeiten entfernen, die möglicherweise automatisch in die build.gradle-Datei meiner App eingefügt werden. Eine davon war: Kompilieren Sie 'com.google.android.gms: play-services: 8.4.0'. Versuchen Sie daher für Best Practices, nur bestimmte Play Services-Bibliotheken einzuschließen, z. B. nur für Anzeigen

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

Obwohl

defaultConfig {
    multiDexEnabled true
}

Dies wird auch das Problem lösen, enthält jedoch viele Hinweise in der Gradle-Konsole, was es verwirrend macht, die anderen tatsächlichen Probleme während der Erstellung zu finden


Es hat den Trick getan, meine Google API-Nutzung auf Play-Services-Maps zu beschränken. Hier ist Googles offizielle Aufschlüsselung der verschiedenen Komponenten in der Play-Services-API: developer.google.com/android/guides/…
jperl

4

Sie können die Dokumentation von Android sehen

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

Ich verwende AS 1.5.1 und bin auf dasselbe Problem gestoßen. Aber nur das Projekt zu reinigen, geht einfach nicht, also habe ich etwas ausprobiert.

  • sauberes Projekt
  • Starten Sie AS neu
  • Projekt synchronisieren

Das hat bei mir funktioniert, also hoffe ich, dass das hilft.


3
Dies wäre für Projekte sinnlos, die das 64k Dex-Methodenlimit überschritten haben.
IgorGanapolsky

3

Ändern Sie in meinem Fall buildToolsVersion von "24" in "23.0.2" und lösen Sie das Problem.


2

In meinem Fall ist die Ausnahme aufgetreten, weil nicht alle Google Play Service-Erweiterungen dieselbe Version wie folgt haben

 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'

Es hat funktioniert, als ich das geändert habe

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
Ich habe nicht nach allen Antworten
gesucht

2

Ich habe es mit dem nächsten gelöst:

Ich habe Multidex konfiguriert

In build.gradle müssen Sie das nächste hinzufügen.

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

Fügen Sie den nächsten in local.properties hinzu

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

Danach müssen Sie in der Anwendungsklasse auch den Multidex hinzufügen.

 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);
   }
}

Vergessen Sie nicht, den Zeilencode in Manifest.xml einzufügen

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

Damit war es genug, um den Fehler zu beheben: Ausführung für Aufgabe fehlgeschlagen ': app: transformClassesWithDexForDebug. Checken Sie sehr gut in build.gradle mit javaMaxHeapSize "2g" ein und die local.properties org.gradle.jvmargs = -Xmx2048m haben eine Größe von 2 Gigabyte.


2
Bitte nur in englischer Sprache posten. Dies scheint eine gute Antwort zu sein. Es wäre eine Schande, wenn sie gelöscht würde, da sie nicht auf Englisch ist.
Tunaki

1

Ich hatte das gleiche Problem, als ich über git auf die alte Version zurückgesetzt habe, und diese Version hatte die vorherige .jar-Bibliothek einer API eines Drittanbieters, und aus irgendeinem Grund stellte sich heraus, dass sich beide JARs desselben SDKs, nur unterschiedliche Versionen, im Ordner / libs befanden .


1

Löschen Sie zuerst die Zwischendateien IHR APP-ORDNER \ app \ build \ intermediates ODER bereinigen Sie Ihr Projekt und erstellen Sie es neu.

Dann hinzufügen

multiDexEnabled true

dh

defaultConfig {
        multiDexEnabled true
}

Es ist Arbeit für mich


1

Ich habe dieses Problem durch Änderung der neuesten Version gelöst buildToolsVersion

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

1

Eine hilfreiche Antwort, wenn alles oben nicht für Sie funktioniert hat.

Gehen Sie zu Ihrer App Gradle-Datei,

Überprüfen Sie, ob alle Abhängigkeitsversionen mit dem richtigen Versionscode und nicht mit einem relativen Wert wie (com.example.demo: +) angegeben sind.

Zurück - Implementierung 'com.google.api-client: google-api-client-android: +'

Nach - Implementierung 'com.google.api-client: google-api-client-android: 1.30.0'


0

Wenn Sie die neueste Gradle-Version verwenden classpath 'com.android.tools.build:gradle:1.5.0' and classpath 'com.google.gms:google-services:1.4.0-beta3', versuchen Sie, das neueste Support-Respository über den SDK-Manager zu aktualisieren und das gesamte Projekt neu zu erstellen.


0

Wenn Sie diese Referenz für das Cordova-Plugin hinzufügen müssen, fügen Sie die nächste Zeile in Ihre plugin.xml-Datei ein.

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

0

Wenn die verschiedenen Abhängigkeiten dasselbe JAR haben, verursacht dies auch diesen Erstellungsfehler.

Beispielsweise:

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

Wenn "library1" und "library2" denselben Namen haben xxx.jar, wird ein solcher Fehler ausgegeben .


0

Es ist mir wegen eines Eclipse-Speicherverlusts passiert. Ich musste meinen Computer neu starten.


0

Ich habe ein paar PNGs und die Build-Nummer im Gradle geändert und jetzt bekomme ich diese. Keine Menge an Reinigung und Neustart half. Das Deaktivieren von Instant Run hat das Problem für mich behoben. YMMV


0

Ich hatte die gleiche Option und sobald ich Instant Run deaktiviert hatte, funktionierte es auf meinem API16-Gerät einwandfrei, aber auf dem API24-Gerät funktionierte es einwandfrei mit Instant Run.

Hoffe, das hilft jemandem, der das gleiche Problem hat


0

Gehen Sie einfach zu Build - Build-Typen bearbeiten - Registerkarte Eigenschaften - Build-Typ-Version und führen Sie ein Downgrade auf Version 23.0.1 durch. OK klicken. Dies funktioniert für Android Studio 1.5. Es hat bei mir funktioniert.


0

Die Schreibantwort ist in Gradle. Setzen Sie defaultConfig {multiDexEnabled true} und dann den Anwendungsnamen in das Manifest android: name = "android.support.multidex.MultiDexApplication". Ich wünschte, diese Antwort wäre für jemanden höllisch


0

Dieser Code löste das Problem

defaultConfig {
        multiDexEnabled true
}

Für die einfachste Möglichkeit, Google Sign In zu implementieren, besuchen Sie: Google Sign In Android

Probiere auch

dexOptions {
        javaMaxHeapSize "4g" 
    }

Behalten Sie auch die gleiche Versionsnummer für verschiedene Dienste bei.


0

Ich habe dieses Problem gelöst, indem ich hinzugefügt habe: In build.gradle:

defaultConfig {
    multiDexEnabled true
}

in local.properties,

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

Abhängigkeit erwähnen:

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

Reinigen und neu aufbauen.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.