Fehler: Ausführung für Aufgabe ': app: transformClassesWithDexForDebug' fehlgeschlagen

74

Der Fehler

Fehler: Ausführung für Task ': app: transformClassesWithDexForDebug' fehlgeschlagen. com.android.build.transform.api.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Prozess 'Befehl' / usr / lib / jvm / java-8-oracle / bin / java '' beendet mit einem Exit-Wert ungleich Null 1

Meine App Gradle-Datei:

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

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"
    defaultConfig {
        applicationId 'Hidden application ID'
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }
    buildTypes {
        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    lintOptions {
        disable 'InvalidPackage'
    }
    packagingOptions {
        exclude 'META-INF/services/javax.annotation.processing.Processor'
    }
    productFlavors {
    }
}

repositories {
    mavenCentral()
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.android.support:cardview-v7:23.1.1'
    compile 'com.jakewharton:butterknife:7.0.1'
    compile 'com.mcxiaoke.volley:library-aar:1.0.0'
    compile 'com.google.android.gms:play-services:8.1.0'
    compile 'com.facebook.android:facebook-android-sdk:4.7.0'
    compile 'com.googlecode.libphonenumber:libphonenumber:7.2.1'
    compile 'com.getbase:floatingactionbutton:1.10.1'
    compile 'com.android.support:preference-v7:23.1.1'
}

Wenn ich beim Debuggen minifyEnabled auf true setze, wird es kompiliert. Dann kann ich meine Anwendung jedoch nicht debuggen.

Ich habe diese andere Frage überprüft: Die Ausführung der Aufgabe ': app: transformClassesWithDexForDebug' beim Implementieren der Google-Anmeldung für Android ist fehlgeschlagen , aber es gibt nur eine Antwort, und die Implementierung behebt das Problem leider nicht.

AFAIK, der Fehler wird durch das Hinzufügen zu vieler Gradle-Abhängigkeiten verursacht, aber ich kann mich irren (ich hoffe wirklich, dass ich mich irre, weil all diese Pakete wirklich wichtig sind!).

Bitte helfen Sie mir, diesen Fehler zu beheben. Vielen Dank!

Saket Jain
quelle
1
Kann Ihr Beitrag den vollständigen Stapel des Fehlers verfolgen? Führen Sie dazu./gradlew clean build --full-stacktrace
Alex Lipov
2
@Alex Ich habe ur Befehl versucht, aber es ist an der gleichen Stelle fehlgeschlagen und es gibt mir den gleichen Fehler org.gradle.api.tasks.TaskExecutionException: Ausführung für Aufgabe ': app: transformClassesWithDexForDebug' fehlgeschlagen.
Antwan
1
Bitte gehen Sie meine Antwort sowie die akzeptierte Antwort auf diesem Stackoverflow-Link durch
user2094075

Antworten:

50

Korrigieren Sie einfach die Abhängigkeiten von Google Play Services:

Sie nehmen alle Spieldienste in Ihr Projekt auf. Fügen Sie nur die gewünschten hinzu.

Wenn Sie beispielsweise nur Karten und g + signin verwenden, ändern Sie diese

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

zu

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

Aus dem Dokument:

In Versionen von Google Play-Diensten vor Version 6.5 mussten Sie das gesamte API-Paket in Ihre App kompilieren. In einigen Fällen war es dadurch schwieriger, die Anzahl der Methoden in Ihrer App (einschließlich Framework-APIs, Bibliotheksmethoden und Ihres eigenen Codes) unter dem Grenzwert von 65.536 zu halten.

Ab Version 6.5 können Sie stattdessen selektiv Google Play-Dienst-APIs in Ihre App kompilieren. Um beispielsweise nur die APIs Google Fit und Android Wear einzuschließen, ersetzen Sie die folgende Zeile in Ihrer build.gradle-Datei:
Kompilieren Sie 'com.google.android.gms: play-services: 8.3.0'
durch diese Zeilen:

kompiliere 'com.google.android.gms: play-services-fitness: 8.3.0'
kompiliere 'com.google.android.gms: play-services-wearable: 8.3.0'

Eine vollständige Liste finden Sie hier .

Krupal Shah
quelle
25

Versuchen

dexOptions {
    javaMaxHeapSize "4g"
    preDexLibraries = false
}

Ich kenne den Grund nicht. Etwas über preDexLibraries: https://sites.google.com/a/android.com/tools/tech-docs/new-build-system/tips

Laut @ lgdroid57:

Die folgende Ressource soll erklären, was dieser Code bewirkt: link ( http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.DexOptions.html ) Eigenschaft | Beschreibung javaMaxHeapSize | Legt den Wert -JXmx * beim Aufruf von dx fest. Das Format sollte dem 1024M-Muster folgen. preDexLibraries | Gibt an, ob Bibliotheken vordexiert werden sollen. Dies kann inkrementelle Builds verbessern, aber saubere Builds können langsamer sein.

winziges Sonnenlicht
quelle
Können Sie bitte erklären, was dies bewirkt?
Saket Jain
Ich weiß es nicht. Ich sehe nur, dass in multiDexEnabled. Oder Sie können Ihr Projekt bereinigen und den Build-Ordner löschen.
winziges Sonnenlicht
Ok, können Sie bitte Ihre Quelle angeben?
Saket Jain
1
Die folgende Ressource soll erklären, was dieser Code bewirkt: link Property | Beschreibung javaMaxHeapSize | Legt den Wert -JXmx * beim Aufruf von dx fest. Das Format sollte dem 1024M-Muster folgen. preDexLibraries | Gibt an, ob Bibliotheken vordexiert werden sollen. Dies kann inkrementelle Builds verbessern, aber saubere Builds können langsamer sein.
lgdroid57
Endlich war diese Antwort die einzige, die für mich funktioniert hat! Danke
Amr Mohammed
20

Versuchen Sie multiDexEnabled true, Ihrer App- build.gradleDatei etwas hinzuzufügen .

  defaultConfig {
    multiDexEnabled true
}
Mohamed Mesalm
quelle
Diese Antwort war genug, um mein Problem zu beheben.
Giraldi
15

Dies ist das Problem bei Multidex. Sie können versuchen, ein Glas zu entfernen, oder Sie können es wie folgt versuchen: http://developer.android.com/tools/building/multidex.html#mdex-gradle in app build.gradle:

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

        // Enabling multidex support.
        multiDexEnabled true
    }
dependencies {
  compile 'com.android.support:multidex:1.0.0'
}

In Ihrem Manifest:

<?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>
Courysky
quelle
14

fügen Sie multiDexEnabled truein default config fileder build.gradlewie folgt aus

    defaultConfig {
        multiDexEnabled true
       }
Mohamed Ibrahim
quelle
2
Das hat bei mir funktioniert. Kann jemand erklären, warum das funktioniert.
Prakash
8

Die Lösung, die für mich persönlich funktioniert hat, war:

in dem build.gradle

defaultConfig {
        multiDexEnabled true
    }

 dexOptions {
        javaMaxHeapSize "4g"
    }
Camilo Soto
quelle
5

Meine Antwort ist etwas alt, aber für mich bestand die einzige Lösung darin, die Option multiDexEnabled in defaultConfig wie folgt hinzuzufügen:

    android{
        ...
        defaultConfig{
            ...
            multiDexEnabled true
        }
    }

Wenn dies bei Ihnen nicht funktioniert, fügen Sie diesen Code hinzu:

    configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '26.1.0'
            }
        }
    }
}

Mein Fehler hing mit einem Problem mit verschiedenen Bibliotheksversionen zusammen und dies machte den Trick.

Ich hoffe das kann jemandem helfen :)

Daniel S.
quelle
2

Stellen Sie sicher, dass Sie nicht zwei Versionen des Google-Dienstes verwenden.

Zum Beispiel mit:

compile 'com.google.firebase:firebase-messaging:9.8.0'

und

compile 'com.google.firebase:firebase-ads:10.0.0'
Izak
quelle
In meinem Fall musste ich die Versionen anderer com.googleBibliotheken auf die neueste Version aktualisieren , um das Problem zu beheben.
Manuel
1

Ich habe dieses Problem erhalten, als ich das Gradle-Plugin von Version 1.2.3 auf 1.5.0 aktualisiert habe, wie von Android Studio vorgeschlagen. Auf seiner Webseite scheint 1.5.0 eine Beta-Version zu sein.

Ehrlich gesagt weiß ich nicht, welche Vorteile die Version 1.5.0 hat, aber ich würde lieber warten, bis es eine stabile Version gibt.

Ein Rückblick auf 1.2.3 löste das Problem natürlich.

Miguel Palacio
quelle
Ich stehe vor dem Problem mit Gradle 1.2.2, bin mir also nicht sicher, ob es von Gradle abhängt?
Saket Jain
@ SaketJain Haben Sie eine der anderen Versionen ausprobiert? Führen Sie 64-Bit-Java auf einem 64-Bit-Computer aus? Es gibt viele Variablen, die sich auswirken können.
Miguel Palacio
Übrigens habe ich die in den anderen Antworten vorgeschlagenen Problemumgehungen ausprobiert (Ändern der Heap-Größe und Reduzieren der Abhängigkeiten so weit wie möglich), aber keine davon hat für mich funktioniert.
Miguel Palacio
Ich habe die anderen Antworten ausprobiert, aber nein, sie haben bei mir nicht funktioniert. Deshalb habe ich keine Antworten akzeptiert.
Saket Jain
1

Mögliche Hilfe

Versucht als absoluter letzter Ausweg, nachdem alle anderen Optionen ausgeschöpft wurden

Ich habe alle Memory Sticks (RAM) bis auf einen entfernt. Ich habe jetzt weniger Speicher, aber es funktioniert wieder. Ich kann nicht vorgeben zu wissen, warum der Erstellungsprozess immer beschädigten Speicher gefunden hat oder ob dies zu 100% die Hauptursache ist - in anderer Hinsicht lief das System einwandfrei. Vielleicht ist dies etwas zu versuchen, viel Glück.

reifer Käse
quelle
1

Für mich löste das Schließen aller anderen Android Studio das Problem.

Ich hatte 3 Android-Studios geöffnet, als ich den Fehler bekam, nachdem ich 2 geschlossen hatte, bekam ich keinen Fehler.

Sie müssen keinen Code für multiDex hinzufügen!

Sanyam Jain
quelle
1

Keine Notwendigkeit für Multitex. Für ein "altes" Projekt, das in Android Studio 2.1 geöffnet wurde, wurde die Gradle-Plugin-Version von 1.5.0 auf 2.1.0 geändert, wodurch das Problem für mich behoben wurde.

buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
    }
}
Mateusz Jablonski
quelle
1

Ich habe es gelöst! Es ist eine Sammlung von Konfigurationen und Updates. Fügen Sie diese Variablen dort hinzu, wo sie in build.gradle passen

android {
packagingOptions {
    exclude 'META-INF/ASL2.0'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE'
}
dexOptions {
    javaMaxHeapSize "4g"
}
defaultConfig {
    multiDexEnabled true
}
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}
}

Dann Update auf Java 8 http://tecadmin.net/install-oracle-java-8-jdk-8-ubuntu-via-ppa/und alles wird gelöst! Es ist wegen des buildToolsUpdates und des neuen Android-Studios. Sonst wird nichts scheitern.

Pian0_M4n
quelle
1

Durch Austausch

kompiliere 'com.google.android.gms: play-services: 8.1.0'

Wenn nur Dateien benötigt werden, kann das Problem behoben werden. Dieses Problem wird generiert, weil die Dateien in der Datei build.gradle überschritten werden.

Ashay Khedkar
quelle
1

Anscheinend habe ich das Problem gelöst, indem ich alle Lösungen kombiniert habe, die dem Android-Manifest Folgendes hinzugefügt haben:

<application
...
        android:name="android.support.multidex.MultiDexApplication" >
...
</application>

Folgen Sie dem Build.gradle App-Modul

android {
...

    dexOptions {
        javaMaxHeapSize "4g"
        preDexLibraries = false
    }
...
    defaultConfig {

        multiDexEnabled true

   }

}
cammando
quelle
1

Gehen Sie zu Build -> Clean und führen Sie Ihre App erneut aus

Dodi
quelle
1

Gehen Sie in Build ->

Projekt reinigen ->

Projekt ausführen: fertig

Ich arbeite an Android 5.1 für mich

DILSHAD AHMAD
quelle
1

Entfernen Sie einfach beide buildOrdner in /androidund/android/app

und wieder bauen mit react-native run-android

Mahdi Bashirpour
quelle
Können Sie diese Frage bitte überprüfen ?
Oliver D
1

Mit ionic konnte ich diesen Fehler mit dem Befehl "cordova clean" beheben.

Fabien Thetis
quelle
0

Ich hatte dieses Problem, als ich meine Kompilierungsaufgabe über SSH an die Google Compute Engine delegierte . Die Art dieses Problems ist ein Speicherfehler, wie im Absturzprotokoll angegeben. Insbesondere wird es ausgelöst, wenn Java nicht mehr über genügend virtuellen Speicher verfügt, um während des Builds arbeiten zu können.

Wichtig: Wenn gradle aufgrund dieses Speicherfehlers abstürzt, werden die gradle-Dämonen noch lange ausgeführt, nachdem Ihre Kompilierungsaufgabe fehlgeschlagen ist. Bei jedem erneuten Versuch, erneut mit gradle zu erstellen, wird ein neuer gradle-Daemon zugewiesen. Sie müssen sicherstellen, dass Sie abgestürzte Instanzen mit ordnungsgemäß entsorgen gradlew --stop.

In den hs_error_pidAbsturzprotokollen werden die folgenden Problemumgehungen angegeben:

# There is insufficient memory for the Java Runtime Environment to continue.
# Possible reasons:
#   The system is out of physical RAM or swap space
#   In 32 bit mode, the process size limit was hit
# Possible solutions:
#   Reduce memory load on the system
#   Increase physical memory or swap space
#   Check if swap backing store is full
#   Use 64 bit Java on a 64 bit OS
#   Decrease Java heap size (-Xmx/-Xms)
#   Decrease number of Java threads
#   Decrease Java thread stack sizes (-Xss)
#   Set larger code cache with -XX:ReservedCodeCacheSize=

Ich habe festgestellt, dass dieses Problem behoben wurde , nachdem die Laufzeitressourcen der virtuellen Maschine erhöht wurden .

Mapsy
quelle
0

Ich hatte einen ähnlichen Fehler. Ich habe es behoben, indem ich einfach das Verzeichnis gewechselt habe. Klonen Sie mein Projekt erneut aus meinem Git-Repository, importieren Sie es in Android Studio und erstellen Sie es. Scheint, als ob eines der Verzeichnisse / Dateien, die von Android Studio beim Erstellen Ihres Projekts generiert wurden, beschädigt wurde. Das Löschen aller von Android Studio generierten Dateien in Ihrem Projekt oder das, was ich getan habe, könnte das Problem lösen. Hoffe das hilft.

user3760100
quelle
0

An alle, die sich diesem Problem gestellt haben / in Zukunft stellen werden:

Klicken Sie auf das Menü Erstellen -> Wählen Sie Build-Variante -> Wiederherstellen auf 'Debug'.

Kommentar zum Debuggen im Modul: app / * debug {debuggable true} * /

Gehen Sie zum Menü Erstellen -> signierte apk generieren -> .... -> erstellen

Firsake
quelle
0

Verschieben Sie die Deklaration zum Anwenden des Plugins am Ende der Datei:

Plugin anwenden: 'com.google.gms.google-services'

Rene Enriquez
quelle
0
  1. Ausführen: Cordova Plugin rm Cordova-Plugin-kompatibel --force
  2. Ausführen: Cordova Plugin [email protected] hinzufügen
  3. Ändern Sie: config.xml in Ihrem Projektordner verwenden Sie "6.2.3", nicht "^ 6.2.3", löschen Sie dann den Ordner "platform / android", führen Sie cordova prepare android erneut aus und cordova build android
Jose Maria Garcia Carrasco
quelle
0

Nicht verrückt werden, ich putze nur, dann baue ich das Projekt neu auf und der Fehler war weg

jan4co
quelle
0

Ich hatte diesen Fehler beim Ausführen eines Ionic-Projekts auf einem Android-Gerät und habe ihn durch Entfernen und Hinzufügen der Android-Plattform behoben:

ionic cordova platform remove android
ionic cordova platform add android
römisch
quelle
0

In meinem Fall:-

  • Was schief gelaufen ist: Ausführung für Aufgabe ': app: multiDexListDebug' fehlgeschlagen.

Antworten:-

Ich habe gerade den react-native-firebaseOrdner gelöscht, der sich im node_modulesOrdner befindet. Dann konnte ich die App erfolgreich ausführen.

Und noch etwas vergessen Sie nicht zu entfernen, react-native-firebaseaber nicht @react-native-firebasein der Datei package.json. Also das nächste Mal wenn du rennst npm Ioder yarn. Dies wird nicht in Ihrer App installiert.

Dieses Paket hat das Problem verursacht.

Vivek S.
quelle
-1

Wenn Java 8 oder höher verwendet wird, besteht das Problem darin, dass die von uns verwendeten Bibliotheken nicht mit Java 8 kompatibel sind. Um dies zu lösen, fügen Sie diese beiden Zeilen zu build.gradle Ihrer App und allen Submodulen hinzu, falls vorhanden. (Android Studio zeigt in der Fehlermeldung deutlich, wie das geht)

targetCompatibility = '1.7' sourceCompatibility = '1.7'

Tejamurthy Shivakumar
quelle