14

ich auf Android Studio 2.1 aktualisiert haben, und ich habe diesen Fehler während ich versuche, meine Corporate großes Projekt zu bauen & laufen:Android Studio 2.1 Instant Lauf java.lang.OutOfMemoryError: GC Obergrenze überschritten

Execution failed for task ':app:transformClassesWithDexForMyAppDebug'. com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: GC overhead limit exceeded

ich habe durch das Forum und deaktiviert Instant Lauf gesucht, schreibt auch meinen build.gradle:

dexOptions { 
    incremental true 
    javaMaxHeapSize "6g" 
} 
... 
dependencies{ 
    compile 'com.android.support:multidex:' 
} 

Aber es doasn't mein Problem gelöst. Ich habe multidex in meinem gradle aktiviert ist, weil ich den Fehler, ohne es zu bekommen:

com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

so dies die Lösung für sie war, und es funktionierte, bevor sie mit den vorherigen Versionen von Android Studio (auch für die anderen arbeiten in die Firma, die Android Studio 1.4-2.0 verwenden), aber nicht für mich, seit ich mein Android Studio aktualisiert habe.

Hat jemand eine Idee, was das Problem verursachen kann?

Was ist auch interessant, dass wenn ich nur das Projekt mache ich den Fehler nicht bekommen, nur wenn ich versuche, es zu starten. Jede Idee wird geschätzt!

EDIT 1:

Was auch interessant ist, dass, wenn ich mein Android Studio neu starten, als der erste Lauf erfolgreich ist, aber die zweite nicht ist.

EDIT 2:

Wenn ich die Heap-Größe, um größere gesetzt (wie 8-10g) als die App nicht einmal auf den ersten Lauf kompiliert.

EDIT 3:

Es scheint, dass das Problem mit Instant-Lauf ist, wenn ich Android Studio zwingen, es nicht zu benutzen (wie auf einmal zwei Geräte bereitstellen oder gradle.properties wie in der Antwort changeing) Der Fehler verschwindet.

+0

Instant-Run fügt Methoden zu dem Programm hinzu und anscheinend, dass Sie über das 65k-Limit gehen. Sind Sie zufällig die Play Services zu Ihren Abhängigkeiten hinzufügen? – EpicPandaForce

+0

Ich habe sofortige Ausführung in den Einstellungen wie diese Antwort deaktiviert: http://Stackoverflow.com/a/36637692/3162918 – bendaf

+1

Ich habe den ganzen Tag versucht, diesen Fehler zu beheben ... – Aspicas

Antwort

25

Fügen Sie diese Datei zu Ihrer gradle.properties Datei hinzu.

# The Gradle daemon aims to improve the startup and execution time of Gradle. 
# When set to true the Gradle daemon is to run the build. 
org.gradle.daemon=true 

# Specifies the JVM arguments used for the daemon process. 
# The setting is particularly useful for tweaking memory settings. 
# Default value: -Xmx10248m -XX:MaxPermSize=256m 
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 

# When configured, Gradle will run in incubating parallel mode. 
# This option should only be used with decoupled projects. More details, visit 
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 
org.gradle.parallel=true 

# Enables new incubating mode that makes Gradle selective when configuring projects. 
# Only relevant projects are configured which results in faster builds for large multi-projects. 
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:configuration_on_demand 
org.gradle.configureondemand=true 

gefunden Here

Und auf meinem build.gradle:

.... 
    dexOptions 
     { 
       incremental false 
       javaMaxHeapSize "2048M" 
       preDexLibraries = false 
     }//end dexOptions 

.... 
+0

Es scheint, dass das Problem mit dem sofortigen Lauf ist. Diese Einstellungen sind deaktiviert, soweit ich verstehe. – bendaf

+0

@ Bendaf Ich lese es aber nicht mit meinem Problem, weil ich Instant Run deaktiviert war – Aspicas

+0

So haben Sie die Instant-Run-Funktion, nachdem Sie Ihre Gradle.properties bearbeitet? Sie haben das Lichtsymbol neben Ihrem Laufsymbol ?, weil ich Instant Run in Einstellungen aktiviert habe, aber ich habe nicht it.:/ – bendaf

3

Schritt 1: Ändern build.grade

defaultConfig { 
     ... 
     // Enabling multidex support. 
     multiDexEnabled true 
     } 

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

Schritt 2: Einstellung auf der Anwendungsklasse

public class MyApplication extends Application { 

@Override 
public void onCreate() { 
    super.onCreate(); 
    MultiDex.install(this); 
} 

} 

Schritt 3: Ändern grade.properties

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

Es funktioniert !. Vielen Dank.

-2
defaultConfig { 
    multiDexEnabled =true 
} 

fügen Sie dies Ihrem Build hinzu.Gradle-Datei der App

+0

die Antwort erklären, so dass andere es verstehen können, nicht nur Frage Kerl quwstion gefragt. –

+0

Ich hatte bereits multidex aktiviert, wie ich in meiner Frage schrieb "Ich habe multidex aktiviert in meiner Größe" ... – bendaf