Android-Fehler: Ausführung für Aufgabe ': app: transformClassesWithDexForRelease' fehlgeschlagen

191

Das Problem ist, dass ich meine App ausführen kann, wenn ich in den debugModus wechsle, aber es schlägt fehl, wenn ich in den releaseModus wechsle .

Ausnahme:

**FAILURE: Build failed with an exception.**
> Execution failed for task ':app:transformClassesWithDexForRelease'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1

Wenn ich den Gradle-Build-Befehl mit Stacktrace ausgeführt habe, bekomme ich Folgendes

./gradlew app:transformClassesWithDexForRelease --stacktrace

> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1

*Exception is:*

>org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithDexForRelease'.
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
            at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
            at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
            at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
            at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
            at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
            at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
            at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
            at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
            at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
            at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
            at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
            at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
            at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
            at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
            at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
            at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
            at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
            at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
            at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
            at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
            at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:154)
            at org.gradle.internal.Factories$1.create(Factories.java:22)
            at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
            at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
            at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
            at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
            at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
            at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
            at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
            at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
            at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
            at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
            at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
            at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
            at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
            at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
            at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
            at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
            at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:48)
            at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)
            at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
            at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
            at org.gradle.util.Swapper.swap(Swapper.java:38)
            at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:66)
            at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
            at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
            at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246)
            at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
            at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
    Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
            at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:54)
            at com.android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.java:57)
            at com.android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.java:47)
            at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:173)
            at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
            at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.java:244)
            at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:220)
            at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.java:231)
            at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:209)
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
            ... 68 more
    Caused by: com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
            at com.android.build.gradle.internal.transforms.DexTransform.transform(DexTransform.java:422)
            at com.android.build.gradle.internal.pipeline.TransformTask$3.call(TransformTask.java:178)
            at com.android.build.gradle.internal.pipeline.TransformTask$3.call(TransformTask.java:174)
            at com.android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.java:55)
            ... 77 more
    Caused by: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
            at com.android.builder.core.AndroidBuilder.runDexer(AndroidBuilder.java:1472)
            at com.android.builder.core.AndroidBuilder.convertByteCode(AndroidBuilder.java:1389)
            at com.android.build.gradle.internal.transforms.DexTransform.transform(DexTransform.java:250)
            ... 80 more
    Caused by: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
            at com.android.builder.core.AndroidBuilder.runDexer(AndroidBuilder.java:1456)
            ... 82 more
    Caused by: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
            at com.android.build.gradle.internal.process.GradleProcessResult.assertNormalExitValue(GradleProcessResult.java:43)
            at com.android.builder.core.AndroidBuilder$2.call(AndroidBuilder.java:1464)
            at com.android.builder.core.AndroidBuilder$2.call(AndroidBuilder.java:1456)
    Caused by: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
            at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:367)
            at com.android.build.gradle.internal.process.GradleProcessResult.assertNormalExitValue(GradleProcessResult.java:41)
            ... 2 more

ich benutze

  • Android Studio 2.0 Beta 6
  • Java-Version: Java (TM) SE-Laufzeitumgebung (Build 1.8.0_73-b02)
  • Gradle-Version: com.android.tools.build:gradle:2.0.0-beta6
  • Und ich habe Multidex aktiviert

Meine build.gradle-Datei

apply plugin: 'com.android.application'
apply plugin: 'com.getkeepsafe.dexcount'

android {

    def VERSION_CODE = 52
    def VERSION_NAME = "1.0"
    compileSdkVersion 23
    buildToolsVersion '23.0.2'

    defaultConfig {
        applicationId "com.example.app"
        manifestPlaceholders = [appName: "Personal App"]
        minSdkVersion 14
        targetSdkVersion 23
        renderscriptTargetApi 19
        renderscriptSupportModeEnabled true
        versionCode VERSION_CODE
        versionName VERSION_NAME

        // Enabling multidex support.
        multiDexEnabled true
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
        encoding = 'UTF-8'
    }

    signingConfigs {
        livekeystore {
            storeFile file('../key.jks')
            keyAlias 'livekeystore'
            keyPassword '123asd'
            storePassword '123asd'
        }
    }


    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            zipAlignEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            signingConfig signingConfigs.burgerking

            manifestPlaceholders = [googleMapsKey: "@string/release_google_map_key", appNameSuffix: ""]
        }

        debug {
            applicationIdSuffix '.dev'
            debuggable true
            minifyEnabled false
            shrinkResources false
            zipAlignEnabled false

            manifestPlaceholders = [googleMapsKey: "@string/debug_google_map_key", appNameSuffix: ' (Dev-' + VERSION_CODE + ')']

        }
    }

    dexOptions {
        incremental true
        javaMaxHeapSize "4g" // 2g should be also OK
    }

    useLibrary 'org.apache.http.legacy'

}

repositories {
    maven { url 'https://mint.splunk.com/gradle/' }
    maven { url "http://dl.bintray.com/populov/maven" }
    mavenCentral()
}

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.4.2'
        classpath 'com.newrelic.agent.android:agent-gradle-plugin:4.244.0'
    }
}


dependencies {
    compile 'com.google.code.gson:gson:2.4'
    compile 'com.android.support:appcompat-v7:23.2.0'
    compile 'com.android.support:recyclerview-v7:23.2.0'
    compile 'com.android.support:cardview-v7:23.2.0'
    compile 'com.android.support:design:23.2.0'
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.google.android.gms:play-services-base:8.4.0'
    compile 'com.google.android.gms:play-services-location:8.4.0'
    compile 'com.google.android.gms:play-services-analytics:8.4.0'
    compile 'com.google.android.gms:play-services-maps:8.4.0'
    compile 'com.google.android.gms:play-services-ads:8.4.0'
    compile 'com.googlecode.libphonenumber:libphonenumber:7.0.5'
    compile 'com.facebook.android:facebook-android-sdk:4.1.1'
    compile 'de.greenrobot:eventbus:2.4.0'
    compile 'com.viewpagerindicator:library:2.4.1@aar'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.squareup:pollexor:2.0.2'
    compile 'com.makeramen:roundedimageview:2.1.0'
    compile 'com.mcxiaoke.volley:library:1.0.16@aar'
    compile files('libs/now-auth-api.jar')
    compile 'com.jakewharton:butterknife:5.1.2'
    compile 'com.github.ksoichiro:android-observablescrollview:1.2.0'
    compile 'io.card:android-sdk:5.3.0'
    compile 'com.appboy:android-sdk-ui:1.10.3'
    testCompile 'junit:junit:4.11'
    testCompile('org.mockito:mockito-core:1.9.5') {
        exclude group: 'org.hamcrest'
    }
    testCompile('org.powermock:powermock-module-junit4:1.5') {
        exclude group: 'org.hamcrest'
    }
    testCompile('org.powermock:powermock-api-mockito:1.6.2') {
        exclude group: 'org.hamcrest'
    }

    compile 'me.grantland:autofittextview:0.2.1'

}

Es scheint, dass ich in der Lage bin, meinen Release-Build zum Laufen zu bringen, wenn ich ihn entferne minifyEnabled true. Warum ist das so? Gibt es einen anderen Weg, es zu lösen?

Sheraz Ahmad Khilji
quelle
Könntest du die build.gradle-Datei deiner App veröffentlichen?
Harisewak
@ Harisewak Ich habe die Frage aktualisiert, Bitte werfen Sie einen Blick darauf
Sheraz Ahmad Khilji
Ja @Sheraz Sie haben Recht, dass das Umschalten von minifyEnabled auf false das Problem löst. Ich habe dies in doc gelesen: 'Sie müssen minifyEnabled aktivieren, um das Verkleinern von Code zu aktivieren, und dann shrinkResources, um das Verkleinern von Ressourcen zu aktivieren. Wenn Sie minifyEnabled noch nicht verwendet haben, stellen Sie sicher, dass dies funktioniert, bevor Sie auch shrinkResources hinzufügen, da Sie möglicherweise Ihre Datei proguard-rules.pro bearbeiten müssen, um sicherzustellen, dass alle Methoden, auf die Sie mit Reflection usw. zugreifen, als Keep-Regeln aufgeführt sind Datei '( tools.android.com/tech-docs/new-build-system/resource-shrinking ). Überprüfen Sie, ob dies der Fall ist.
Harisewak
1
@ Harisewak es löst immer noch nicht das Problem, wenn ich die Aufgabe mit Debug ausführen, dann bekomme ich diesen FehlerUncaught translation error: com.android.dx.cf.code.SimException: com.android.dx.rop.cst.CstMethodRef cannot be cast to com.android.dx.rop.cst.CstInterfaceMethodRef
Sheraz Ahmad Khilji
Ich habe das gleiche Problem mit meinem Projekt. Wenn ich com.android.tools.build:gradle:1.3.0 verwende, kann ich kompilieren. Sobald ich die 2.0.0 benutze, gibt es mir das gleiche Problem
Santacrab

Antworten:

185

Ich habe es nur diesen Code behoben.

local.properties

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

und du solltest dies auf gradle ändern

defaultConfig {
    applicationId "yourProjectPackage"
    minSdkVersion 15
    versionCode 1
    versionName "1.0"
    targetSdkVersion 23

    multiDexEnabled true //important
}
Aemre
quelle
4
"local.properties" ist das ein Dateiname oder ein Konfigurationswert? Wo (zB: in welchem ​​Ordner) befindet es sich im Projekt?
Ulysses Alves
1
Die Datei local.properties befindet sich in der Stammebene des Projekts. Wenn Sie ein Problem mit MultiDex haben -> developer.android.com/studio/build/multidex.html
aemre
Ich habe gerade multiDexEnabled true in mein build.gradle eingefügt und die Magie war erledigt. Danke dir.
Marcelo Gumiero
Ich weiß nicht, was das alles bedeutet, aber es hat bei mir funktioniert!
DaveNOTDavid
Bei API <21 führt das multiDexEnabledErweitern der ApplicationKlasse von MultiDexApplicationzu NoClassDefFoundErrors.
Miha_x64
82

Wenn Sie multiDexEnabled = truein defaultConfig die App erstellen, erhalten Sie das gewünschte Ergebnis.

defaultConfig {
    minSdkVersion 14
    targetSdkVersion 22
    multiDexEnabled = true
}
Rahul
quelle
Dies ist nicht der einzige Schritt, um Multidex zuzulassen. Und du brauchst es DexExceptionsowieso nur, wenn du ein siehst . developer.android.com/studio/build/multidex.html
OneCricketeer
45

Für mich wurde das Problem gelöst, nachdem ich die jarDatei aus meinem Projekt entfernt hatte. Es scheint, dass eine der jarDateien in meinem Projekt eine ältere Version von verwendet hat google play services.

Sheraz Ahmad Khilji
quelle
Gleiches Problem mit jackrabbit-standalone-2.12.2.jar. Wenn ich es zum Projekt hinzufüge, tritt das Problem auf.
Alexeev Valeriy
1
@MikeOx Ich habe einige Android-Tools aktualisiert und als Ergebnis zwei Versionen einiger JAR-Dateien erhalten, z. B. mockable-android-24.jar und mockable-android-25.jar. Durch das Entfernen der älteren wurden diese Buildfehler für mich behoben.
Parvus
Aber ich benutze keine JAR-Datei, warum ich dann mit diesem Problem konfrontiert bin
Mr. Mad
15
Können Sie bitte weitere Details Erklärung für diese Lösung geben
Ivan Milisavljevic
@IvanMilisavljevic Sie können jetzt Gradle verwenden, keine JAR-Dateien. developer.google.com/android/guides/setup#split
OneCricketeer
39

Ich habe auch den gleichen Fehler erhalten:

Fehler: Ausführung für Task ': app: transformClassesWithDexForDebug' fehlgeschlagen. com.android.build.api.transform.TransformException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Prozess 'Befehl' C: \ Programme \ Java \ jdk1.8.0_60 \ bin \ java.exe '' beendet mit einem Exit-Wert ungleich Null 1

Nun, ich habe dies mit Hilfe der folgenden Schritte behoben:

  1. Öffnen Sie das build.gradle Ihrer App (nicht das im Projektstamm) und fügen Sie Folgendes hinzu:

    android {
    //snippet
    //add this into your existing 'android' block
    
        dexOptions {
        javaMaxHeapSize "4g"
        }
    
    //snip
    }
  2. Versuchen Sie Ihren Build erneut.

Hinweis: 4 g sind 4 Gigabyte und dies ist eine maximale Heap-Größe für den Dex-Betrieb.

PN10
quelle
Rettete meinen Tag! Prost!
Devhermluna
Das Beste ... Ich bin schon seit Stunden unterwegs ... danke!
MbaiMburu
33

KEINE NOTWENDIGKEIT FÜR MULTIDEX, ICH WIEDERHOLE, KEINE NOTWENDIGKEIT FÜR MULTIDEX


Lassen Sie mich näher darauf eingehen: Multidex ist im Grunde ein Tool, das mit Android geliefert wird. Wenn Sie es auf true setzen, können Apps mit> 64.000 Methoden mithilfe eines leicht geänderten Erstellungsprozesses kompiliert werden. Sie müssen jedoch nur Multidex verwenden, wenn Ihr Fehler folgendermaßen aussieht:

Probleme beim Schreiben der Ausgabe: Zu viele Feldreferenzen: 131000; max ist 65536. Sie können versuchen, die Option --multi-dex zu verwenden.

oder so

Konvertierung in das Dalvik-Format fehlgeschlagen: Dex: Methoden-ID kann nicht in [0, 0xffff]: 65536 ausgeführt werden

Das ist hier aber nicht der Fall! Das Problem hier (zumindest für mich) wird durch die Abhängigkeiten Ihrer build.gradle-Datei verursacht.

DIE LÖSUNG: Verwenden Sie bestimmte Abhängigkeiten - importieren Sie nicht nur einen ganzen Abschnitt von Abhängigkeiten!

Wenn Sie beispielsweise die Play Services-Abhängigkeit für den Standort benötigen, importieren Sie sie nur für den Standort.

MACHEN:

compile 'com.google.android.gms:play-services-location:11.0.4'

NICHT:

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

Ein weiteres Problem, das dies verursachen könnte, ist möglicherweise eine von Ihnen verwendete externe Bibliothek, die auf eine frühere Version Ihrer Abhängigkeit verweist. Befolgen Sie in diesem Fall die folgenden Schritte:

  1. Gehen Sie zum SDK-Manager und installieren Sie alle Updates für Ihre Abhängigkeiten
  2. Stellen Sie sicher, dass in Ihrer Datei build.gradle die neueste Version angezeigt wird. Verwenden Sie diesen Link, um die neueste Version zu erhalten: https://developers.google.com/android/guides/setup
  3. Bearbeiten Sie Ihre Bibliothek (oder installieren Sie eine aktualisierte Version, falls vorhanden), um auf die neueste Version zu verweisen

Ich weiß, dass diese Frage alt ist, aber ich muss diese Antwort herausbringen, da die Verwendung von Multidex ohne Grund möglicherweise ANRs für Ihre App verursachen kann! Verwenden Sie Multidex NUR, wenn Sie sicher sind, dass Sie es benötigen und verstehen, was es ist.

Ich selbst habe stundenlang versucht, dieses Problem ohne Multidex zu lösen, und wollte nur meine Erkenntnisse teilen - hoffe, das hilft

Ruchir Baronia
quelle
Brillant! Funktioniert perfekt!
stoefln
1
Woher wissen Sie, welche spezifische Abhängigkeit das Problem verursacht? Ich habe hinzugefügt com.facebook.android:audience-network-sdk:4.+und kann seitdem nicht mehr bauen.
Ciberman
Du hast meinen Tag gerettet!
Rowan
1
so eine dumme Antwort. Wenn Sie viele Abhängigkeiten haben, benötigen Sie ohnehin Multi-Dex. Fügen Sie einfach Kotlin-Bibliotheken, einige Google-Dienste ( com.google.android.gms:play-services-*:*), Firebase-Dienste, Crashlytics, Gson, AndroidX (Support-Bibliotheken), Cardview, Recyclerview und Android.material: Material hinzu. ES IST OHNE MULTI DEX NICHT MÖGLICH (Magst du Capslock? Ich nicht, also beantworte solche Fragen bitte beim nächsten Mal hier nicht ...)
user155
Ein Körper ist hier schlau! Genau!, Es ist kein Multidex-Fehler, der Multidex-Fehler unterscheidet sich und kann von einigen Abhängigkeiten herrühren. und @ user155, RUCHIR IST NICHT VERANTWORTLICH FÜR IHR ABHÄNGIGKEITSPROBLEM! und ich mag Kapseln :)
Hossein
25

Fügen Sie in Ihrer defaultConfig auf App-Ebene multiDexEnabled true hinzu gradle.

defaultConfig {
    applicationId "your application id"
    minSdkVersion 16
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner"android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
Mwongera808
quelle
24

Ich hatte das ähnliche Problem in meiner App. Hier ist was ich getan habe.

1. Fügen Sie dies für build.gradle in module: app hinzu

multiDexEnabled = true

Der Code wäre also wie folgt:

    android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.example..."
        minSdkVersion 17
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        multiDexEnabled = true
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

Das hat bei mir funktioniert. Hoffe das hilft dir auch :)

Im selben Projekt habe ich auch Firebase verwendet . Wenn Sie also multiDexEnabled aktivieren, können Sie ein anderes Problem in Firebase für Pre Lollipop-Geräte lösen . Einige FireBase-Klassen wurden nicht identifiziert. ( Provider com.google.firebase.provider kann nicht abgerufen werden ).
Die Methode zur Lösung dieses Problems wird hier erläutert .

Thilina Kj
quelle
minifyEnable true gibt mir eine Ausnahme - Unten ist meine Frage, stackoverflow.com/questions/51720018/… Bitte helfen Sie mir dabei.
Naveen
21

Ich habe diesen Fehler beim Upgrade von Google Play Services auf 9.0 von 7.5 erhalten

Fehler mit unten:

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

Als ich zu wechselte

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

Es liegt kein Fehler vor. Versuche dies

Kalaivanan
quelle
1
danke Ich habe die Version geändert, um 'com.google.android.gms: play-services: 8.4.0' zu kompilieren. Ich denke, Volley verwendet einige alte Google Play-Dienste, die nicht mit Play-Diensten kompatibel sind:> 9.0
jai_b
3
Das war die Lösung für mich. Das Problem ist, dass mehrere Module von Drittanbietern auf Play-Services mit unterschiedlichen Versionen verweisen. Wie wird also erwartet, dass diese Versionen ständig synchronisiert werden? Sehr seltsames architektonisches Detail.
Ryan H.
1
Sie sollten dies nicht verwenden. Bitte kompilieren Sie diese Bibliotheken selektiv. developer.google.com/android/guides/setup#split
OneCricketeer
13

Nach dem Update auf Android 3.4 bekam ich den Fehler und versuchte alle oben genannten Lösungen.

Die Hauptursache des Problems war, dass durch das Aktualisieren von Android Studio die sofortige Ausführung aktiviert wurde .

Daher ist eine der Lösungen, die Sie ausprobieren können, das Deaktivieren von Instant Run, sofern es für Sie aktiviert ist, das Problem behoben.

devDeejay
quelle
1
Ich hatte das gleiche Problem. Das Deaktivieren und erneute Aktivieren hat bei mir funktioniert.
Fogh
1
Mein Problem wurde ebenfalls behoben.
Wohlgemerkt
1
Aaaaarg sie aktivieren dies immer beim Update und es verursacht immer so viele Probleme.
Oliver Dixon
1
Jep, das war auch für mich die Ursache des Problems, nachdem ich Firebase in das Projekt aufgenommen hatte. Durch Deaktivieren von Instant Run kann ich es endlich erstellen, danke!
Starwave
1
Das Deaktivieren des Sofortlaufs hat bei diesem Problem bei mir funktioniert. Ich habe den Fehler nicht erneut erhalten.
Wesley Franks
11

Nun, ich glaube, die Frage wird beantwortet und akzeptiert. Aber ich werde schreiben, was mir bevorsteht und wie ich es gelöst habe.

Ich habe auch den gleichen Fehler erhalten:

Fehler: Ausführung für Task ': app: transformClassesWithDexForDebug' fehlgeschlagen. com.android.build.api.transform.TransformException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Prozess 'Befehl' C: \ Programme \ Java \ jdk1.8.0_60 \ bin \ java.exe '' beendet mit einem Exit-Wert ungleich Null 1

Ich hatte nicht das Glück, alle Einstellungen anzuwenden, und hatte Erfolg. Aber als ich versuchte, das Projekt erneut zu debuggen. Diesmal habe ich drei Fehler (einschließlich oben):

Fehler: Java HotSpot (TM) 64-Bit-Server-VM-Warnung: CodeCache ist voll. Der Compiler wurde deaktiviert.

und

Fehler: Java HotSpot (TM) 64-Bit-Server-VM-Warnung: Versuchen Sie, die Code-Cache-Größe mit -XX zu erhöhen: ReservedCodeCacheSize =

Also was habe ich getan? Ich gehe einfach zu Android Studio:

Datei> Caches ungültig machen / neu starten ..> Ungültig machen & neu starten

Schnelle Lösung!

Zusätzlicher Hinweis:

Was ich in Gradle Console gefunden habe:

: app: incrementalDebugTasks: app: prePackageMarkerForDebug: app: fastDeployDebugExtractor: app: generateDebugInstantRunAppInfo: app: transformClassesWithDexForDebug Um dex in process auszuführen, benötigt der Gradle-Daemon einen größeren Heap. Es hat derzeit ca. 910 MB. Erhöhen Sie für schnellere Builds die maximale Heap-Größe für den Gradle-Daemon auf mehr als 2048 MB. Setzen Sie dazu org.gradle.jvmargs = -Xmx2048M im Projekt gradle.properties. Weitere Informationen finden Sie unter https://docs.gradle.org/current/userguide/build_environment.html : app: transformClassesWithDexForDebug FAILED

Weitere Informationen finden Sie hier im Oracle-Blog

fWd82
quelle
9

Ich habe diesen Code gerade in gradle.properties geschrieben und es ist jetzt in Ordnung

org.gradle.jvmargs=-XX:MaxHeapSize\=2048m -Xmx2048m
Selim Özbudak
quelle
8
  1. Entfernen Sie die JAR-Dateien in Ihrem Gradle
  2. Synchronisiere es
  3. Kopieren Sie das Glas und synchronisieren Sie es

Das hat bei mir funktioniert.

Bharath
quelle
Können Sie genauer sagen, welche JAR-Dateien? Sind es die JAR-Dateien in unserem Projekt gradle/wrapper?
HendraWD
4
Ich weiß nicht, was es ist, wenn Leute "die Gläser" erwähnen. Das erklärt nichts.
Trace
7

Es hat bei mir nur mit einem bestimmten Service funktioniert.

Zum Beispiel statt zu verwenden:

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

Ich benutzte:

com.google.android.gms:play-services-places:10.0.1

Marco Muñoz
quelle
1
Hier gilt das gleiche. Ich habe das Problem gelöst, indem ich die Kompilierung 'com.google.android.gms: play-services: 10.2.0' durch die Kompilierung 'com.google.android.gms: play-services-location: 10.2.0'
Sukhbir
6

Ich weiß, dass es eine alte Frage ist, aber immer noch. Jedes Mal, wenn mir das passiert, habe ich alle Play-Services-Bibliotheken aufgenommen. Ändern Sie einfach play-services: xxx in play-service-: xxx in der Datei build.gradle (Modul)

KostasKol
quelle
6

Sol 1: In build.gradle:

defaultConfig {
    multiDexEnabled true
}

Bereinigen Sie Ihr Projekt und erstellen Sie es neu.

Sol 2: in local.propertiesadd,

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

Sol 3

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

Andernfalls fügen Sie alle 3 in Ihrer Anwendung hinzu.

Crime_Master_GoGo
quelle
5

Nur das Setzen von multiDexEnabled auf true hat gut funktioniert.

    defaultConfig 
    {
        multiDexEnabled true     
    }
Wanjiku
quelle
3

Ich habe jdk auf 1.8.0_74, Android-studio auf 2.1 Vorschau 1 aktualisiert und zur Anwendungsdatei hinzugefügt

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}
Yuri Misyac
quelle
2

Ich hatte das gleiche Problem. Eines Tages funktionierte das Programm perfekt und das Folgende nicht. Ich habe die Änderungen, die ich vorgenommen habe, auf Github überprüft. Für mich lag das Problem bei build.gradle (Modul: App) in den Abhängigkeiten:

compile 'com.android.tools.build:gradle:2.1.2'

Diese Zeile war diejenige, die das Problem verursachte. Nach dem Ändern wurde die App wieder ordnungsgemäß ausgeführt

Sara Alberola
quelle
1
Keine andere Chance>
Ajay Pandya
1
Ändern Sie es zu was?
Ruchir Baronia
1
Ich habe es gelöscht (ich habe es jetzt überprüft) und es hat weiter funktioniert
Sara Alberola
2

Fügen Sie diese Zeile in Ihre build.gradle

 defaultConfig {
    ............
    aaptOptions.cruncherEnabled = false
    aaptOptions.useNewCruncher = false
    compileOptions.encoding = 'ISO-8859-1'
    multiDexEnabled true
}
Ganesh P.
quelle
4
Welche "Zeile" haben Sie hier hinzugefügt?
OneCricketeer
2

Fügen Sie in DefaultConfig multiDexEnabled = true hinzu

    defaultConfig {
    applicationId "com.test"
    minSdkVersion 16
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    multiDexEnabled = true
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
Braj Bhushan Singh
quelle
2

Meins wurde also nicht durch Hinzufügen des multiDexEnabled-Flags gelöst. Es war tatsächlich da, bevor die Fehlermeldung angezeigt wurde.

Was den Fehler für mich behoben hat, war sicherzustellen, dass ich dieselbe Version aller Play-Services-Bibliotheken verwendete. In einer Bibliothek hatte ich 11.8.0, aber in der App, die die Bibliothek verwendet, verwendete ich 11.6.0, und dieser Unterschied verursachte die Fehlermeldung.

Anstatt Ihre Bibliotheken wie in früheren Antworten auf eine bestimmte Version zu ändern, möchten Sie möglicherweise überprüfen, ob Sie überall dieselbe Version verwenden, da das Mischen von Versionen von Android Studio durch Warnungen ausdrücklich nicht empfohlen wird.

kriztho
quelle
2

Nach viel Mühe habe ich gerade unten Anmeldeinformationen hinzugefügt und es gelingt mir

1) app-> 'proguard-rules.pro' Datei

-ignorewarnings

-keep class * {
    public private *;
}

2) Und auch in der Datei app -> build.gradle hinzugefügt

android {

        ...........................
    defaultConfig {
        ..................  

     multiDexEnabled true
    }


    buildTypes {
        debug {
            minifyEnabled true
            useProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
        innerTest {
            matchingFallbacks = ['debug', 'release']
        }

    }

...................................................
}

dependencies {
    ..................................
    implementation  'com.android.support:multidex:1.0.2'
}
Kush
quelle
2

Standardmäßig hat Android Studio eine maximale Heap-Größe von 1280 MB. Wenn Sie an einem großen Projekt arbeiten oder Ihr System über viel RAM verfügt, können Sie die Leistung verbessern, indem Sie die maximale Heap-Größe für Android Studio-Prozesse wie die Kern-IDE, den Gradle-Daemon und den Kotlin-Daemon erhöhen.

Wenn Sie ein 64-Bit-System mit mindestens 5 GB RAM verwenden, können Sie die Heap-Größen für Ihr Projekt auch manuell anpassen. Gehen Sie dazu folgendermaßen vor:

Klicken Sie in der Menüleiste auf Datei> Einstellungen (oder auf Android Studio> Einstellungen unter macOS). Klicken Sie auf Darstellung und Verhalten> Systemeinstellungen> Speichereinstellungen.

Für weitere Informationen klicken Sie auf

https://developer.android.com/studio/intro/studio-config

Geben Sie hier die Bildbeschreibung ein

Vinod
quelle
1

Ändern Sie einfach die Google Play-Dienste in Gradle (Modul-App) von 9.xx auf die niedrigere Version 8.4.0 ist Arbeit für mich

Nazwa Asshiba
quelle
Dies ist ein Zeichen dafür, dass alle anderen von Ihnen verwendeten Google Play Services-Versionen nicht übereinstimmen.
OneCricketeer
1

Ich habe meine behoben, die ich meinem Projekt hinzugefügt habe > app > libs android volley.jar und mein Problem wurde gelöst

MarJose
quelle
Sie brauchten keine JAR-Datei. compile 'com.android.volley:volley:1.0.0' developer.android.com/training/volley/index.html
OneCricketeer
1

Wenn Sie nach dem Aktualisieren der Google Play-Dienste 9.8.0 auf das Problem stoßen, fügen Sie dies Ihren Abhängigkeiten hinzu:

`dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.google.firebase:firebase-messaging:9.8.0'
compile 'com.google.android.gms:play-services-maps:9.8.0'
compile 'com.google.android.gms:play-services-location:9.8.0'
compile 'com.google.firebase:firebase-database:9.8.0'
compile 'com.google.firebase:firebase-auth:9.8.0'
compile 'com.google.firebase:firebase-crash:9.8.0'
compile 'com.google.maps.android:android-maps-utils:0.4.4'
compile 'com.google.android.gms:play-services-appindexing:9.8.0'

}
ismail alaoui
quelle
1

Dies ist mir sogar bei Debug-Builds passiert und hat einfach alle Build-Ordner auf Modulebene und Projektebene gelöscht, und es hat funktioniert, ja, einfach so.

Panduka DeSilva
quelle
Hat gerade für mich gearbeitet.
WillC
1

Für diejenigen, die noch VS-TACO verwenden und dieses Problem haben. Dies geschieht aufgrund der Versionsinkonsistenz einer JAR-Datei.

Sie müssen der build.gradleDatei im platforms\androidOrdner noch Korrekturen hinzufügen :

 defaultConfig {
        multiDexEnabled true 
 }

 dependencies {
      compile 'com.android.support:multidex:1.0.3'
 }

Es ist besser, in der build-extras.gradleDatei (die automatisch mit der Datei build.gradle verknüpft ist) alle anderen Änderungen vorzunehmen, sofern vorhanden, und alle im platforms/androidOrdner zu löschen , aber nur die build-extras.gradleDatei dort zu belassen . Dann einfach kompilieren.

Serg Tomcat
quelle
1

Keine dieser Antworten hat bei mir funktioniert. Ich benutze Android Studio 3.4.1.

Ich konnte das Projekt erstellen, aber Android Studio zeigte diesen Fehler, als ich es auf einem mobilen Gerät bereitstellen wollte. Es stellt sich heraus, dass es sich um einen "Sofortlauf" -Fehler handelt.

Folgen Sie dieser Antwort: https://stackoverflow.com/a/42695197/3197467

Keivan
quelle
0

Ich weiß wirklich nicht wie, aber der Fehler ist verschwunden, nachdem ich das alles getan habe:

1

löschen implementation 'com.google.android.gms:play-services:12.0.1'

Und hinzufügen

implementation 'com.google.android.gms:play-services-location:12.0.1'
implementation 'com.google.android.gms:play-services-maps:12.0.1'
implementation 'com.google.android.gms:play-services-places:12.0.1'

2

Aktualisieren Sie git, jdk und ändern Sie den JDK-Speicherort in der Projektstruktur

3

Löschen Sie den Build-Ordner in meinem Projekt

4

Bereinigen Sie das Projekt und erstellen Sie es neu

Kyo Huu
quelle