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!


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 .


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.


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
}

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>

14

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

    defaultConfig {
        multiDexEnabled true
       }

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"
    }

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 :)


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'

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.


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.


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!


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

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.


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.


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

   }

}

1

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


1

Gehen Sie in Build ->

Projekt reinigen ->

Projekt ausführen: fertig

Ich arbeite an Android 5.1 für mich


1

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

und wieder bauen mit react-native run-android


Können Sie diese Frage bitte überprüfen ?
Oliver D


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 .


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.


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


0

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

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


0
  1. Ausführen: Cordova Plugin rm Cordova-Plugin-kompatibel --force
  2. Ausführen: Cordova Plugin Cordova-plugin-compat@1.2 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

0

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


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

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.


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

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.