Pentru a rula dex în proces, daemonul Gradle are nevoie de un heap mai mare. În prezent, acesta are aproximativ 910 MB (Programare, Android, Android Studio, Gradle Daemon)

Rohith Manchikalapati a intrebat.

Primesc această eroare Gradle de fiecare dată când îmi execut aplicația. Eroarea este:

Pentru a rula dex în proces, daemonul Gradle are nevoie de un heap mai mare. În prezent are aproximativ 910 MB.

Pentru compilări mai rapide, creșteți dimensiunea maximă a heap-ului pentru daemonul Gradle la mai mult de 2048 MB.

Pentru a face acest lucru, setați org.gradle.jvmargs=-Xmx2048M în proiectul gradle.properties. Pentru mai multe informații, consultați https://docs.gradle.org/current/userguide/build_environment.html

Iată fișierul meu build.gradle (Module:app):

apply plugin: 'com.android.application'

    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.3"

        defaultConfig {
            applicationId "mobileapp.tech2dsk"
            minSdkVersion 15
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:23.3.0'
        compile 'com.android.support:design:23.3.0'
    }

Și iată fișierul build.gradle(Project):

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

și aici este fișierul meu gradle.properties :

# Project-wide Gradle settings.

# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# 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

13 răspunsuri
Veeresh Charantimath

Adăugați în Build.gradle

android {
 dexOptions {
    javaMaxHeapSize "4g"
  }
}

Mai multe informații – Android Gradle: Ce este javaMaxHeapSize „4g”?

Comentarii

  • în aplicația Module sau în fișierul de proiect –  > Por Rohith Manchikalapati.
  • build.gradle (Aplicație modul) –  > Por Veeresh Charantimath.
  • Dacă nu vă deranjează, puteți să-mi spuneți de ce apare această eroare –  > Por Rohith Manchikalapati.
  • îmi pare rău că și acest lucru nu funcționează, de asemenea, obținând aceeași eroare cu chnage în numere –  > Por Rohith Manchikalapati.
  • De asemenea, trebuie să adăugați org.gradle.jvmargs=-Xmx2048m Puteți schimba numărul 2048 în funcție de ram-ul pe care îl alocați în heap. –  > Por 5511002233.
Sotti

Actualizare din 25 iunie 2017

La Google IO 2017 au existat câteva actualizări despre acest subiect. Nu se mai recomandă să setați stegulețul pe dexOptions, așa că, dacă aveți ceva de genul celor de mai jos, îl puteți șterge.

dexOptions {
   javaMaxHeapSize "2g"
}

Răspuns original:

Android Studio 2.1 activează Dex In Process care împarte VM cu Gradle pentru a îmbunătăți timpii de compilare. Datorită acestui fapt, este necesar să măriți dimensiunea daemonului Gradle pentru a încorpora acele procese Dex.

Cel puțin este nevoie de 2 giga de memorie, dar puteți încerca cu trei dacă vă permiteți.

gradle.properties.

org.gradle.jvmargs=-Xmx3072m

În mod implicit, dimensiunea maximă a heap-ului Java este de un giga, dar în cazul în care ați modificat-o în fișierul build.gradle…

build.gradle (Aplicație)

dexOptions {
   javaMaxHeapSize "2g"
}

…trebuie să redimensionați dimensiunea daemonului Gradle în mod corespunzător (trebuie să fie mai mare pentru a se potrivi cu heap-ul).

Note:

  • Vă rugăm să realizați că numerele de mai sus variază de la o mașină la alta.

Comentarii

  • Pentru cei care folosesc Ionic pentru a construi o aplicație, puteți org.gradle.jvmargs=-Xmx3072m să accesați ~/.gradle/gradle.properties –  > Por Garrett.
  • Acest răspuns ar trebui să fie acceptat ca fiind cel corect. Vă mulțumim, btw –  > Por LeonardoSibela.
  • Pe Android Studio 3.0, eliminarea în întregime a javaMaxHeapSize mi-a scăzut timpii de compilare incrementală de la 90 de secunde la 7 secunde. –  > Por dell116.
  • Timp de ani de zile am avut acest lucru în gradle, în prezent la 4g, și am urât că ar trebui să fie mereu îngrijit (ridicat) pe măsură ce trece timpul. Acum se pare că pot scăpa de această dezordine. Eliminarea acestuia mi-a redus imens timpul de construcție gradle, după cum a comentat dell116. –  > Por Androidcoder.
lujop

Pur și simplu lăsați asta pe gradle.properties:

org.gradle.jvmargs=-Xmx2048m 

Vă puteți uita la acel articol ca referință.

Comentarii

  • Fantastic! Problema mă înnebunea și asta a rezolvat-o imediat. Mulțumesc –  > Por Clive Sargeant.
  • în proiectele cordova, fișierul gradle.properties ar trebui să fie creat în platforms/android/gradle.properties –  > Por Alex.
  • Nu găsesc acel fișier. am doar project.properties –  > Por Sachin HR.
Ajay Pandya

Știu că este prea târziu pentru răspuns, dar sper că va fi de ajutor pentru cineva

Am încercat multe lucruri și am căutat mult, dar nimic nu funcționează pentru mine includ următoarele și build.gradle (App) de asemenea, dosen nu funcționează în cazul meu

android {
  dexOptions {
    javaMaxHeapSize "4g"
  }
}

De asemenea, puteți încerca să adăugați pe dvs. gradle.properties:

org.gradle.jvmargs=-Xmx2048m 

În cazul meu, problema este utilizarea cpu există o mulțime de procese care rulează în timp ce construiesc apk am ucide doar unele procese, cum ar fi genymotion, skype, Safari etc. și apoi invalidați cache-urile / reporniți-l funcționează pentru mine.

Comentarii

  • lăudat, mulțumiri, probabil pentru că dimensiunea totală a proiectului este mult prea mare pentru dimensiunea implicită a heap-ului java, totuși mulțumesc. țineți-l rock frate! –  > Por ralphgabb.
ANANDAN SELVAGANESAN

Modificați sau creați un fișier numit gradle.properties în următorul director.

Pentru Mac,/Users/USER_NAME/.gradle/gradle.properties

Pentru Linux,/home/USER_NAME/.gradle/gradle.properties

Pentru Windows,C:UsersUSER_NAME.gradlegradle.properties

și aplicați modificările de mai sus. În cele din urmă ar trebui să arate astfel,

org.gradle.daemon=true

# 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

org.gradle.configureondemand=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

Vă rugăm să consultați acest linkhttps://tausiq.wordpress.com/2015/02/24/android-speed-up-gradle-build-process-in-android-studio/

Comentarii

  • „mai sus” ? Poate că vă referiți la ceva de genul „următoarele”? –  > Por Bö macht Blau.
  • Nu există niciun fișier gradle.properties în acea locație –  > Por Sachin HR.
  • Mulțumesc! Am încercat totul și acesta a fost singurul care a funcționat pentru mine! Java părea să ignore toate celelalte setări enumerate în gradle.properties și build.gradle etc. –  > Por James Trickey.
Andrei

Puteți merge mai departe și schimba build.gradle astfel (așa cum a sugerat Veeresh Charantimath):

android {
 dexOptions {
    javaMaxHeapSize "2g"
 }
}

Și apoi s-ar putea să trebuiască să te joci cu chestii MultiDex (veți avea nevoie de el pentru proiecte mari de android). Dar problema dvs. ar putea fi mai simplă. Există o anumită șansă ca tu să compilezi și să incluzi în proiectul tău unele biblioteci care nu sunt necesare. M-am confruntat cu această problemă în proiectul meu mic. Iată ce am făcut pentru a o rezolva:

Am eliminat acest lucru din build.gradle:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

Și am eliminat manual folderul de compilare din rădăcina aplicației. Problema a fost rezolvată.

Pedro Reis

Este o eroare sau un avertisment?

Uneori este doar un avertisment și reușesc să o construiesc cu succes:

:transformClassesWithDexForDebug
To run dex in process, the Gradle daemon needs a larger heap.
It currently has approximately 910 MB.
For faster builds, increase the maximum heap size for the Gradle daemon to more than 2048 MB.
To do this set org.gradle.jvmargs=-Xmx2048M in the project gradle.properties.
For more information see https://docs.gradle.org/current/userguide/build_environment.html
:mergeDebugJniLibFolders UP-TO-DATE
:transformNative_libsWithMergeJniLibsForDebug
:processDebugJavaRes UP-TO-DATE
:transformResourcesWithMergeJavaResForDebug
:validateDebugSigning
:packageDebug
:zipalignDebug
:assembleDebug
:cdvBuildDebug

BUILD SUCCESSFUL

Total time: 3 mins 44.991 secs
Built the following apk(s):
(...)

Deci, problema care poate împiedica o compilare reușită poate fi alta…

Vincy

În WINDOW’S deschideți fișierul gradle.properties din ~UsersUserName.gradle așa cum se arată mai jos: pentru mai multe informații introduceți aici descrierea linkului

și asigurați-vă că setați valoarea sa la minim la 4608M așa cum se arată mai jos pentru compilări mai rapideorg.gradle.jvmargs=-Xmx4608M

Odată ce ați făcut acest lucru, puteți vedea diferența dintre zi și noapte în ceea ce privește viteza de construire a aplicației dvs…

Comentarii

  • Nu există niciun fișier cu numele: gradle.properties în C:UsersUSER.gradle. –  > Por fWd82.
mbonnin

Sunt destul de sigur javaMaxHeapSize și org.gradle.jvmargs se exclud reciproc.

  • javaMaxHeapSize este vechiul mod de a face acest lucru, cu dex rulat în afara procesului. Acesta va fi un argument pentru procesul dex.
  • org.gradle.jvmargs este noua modalitate de a face acest lucru, cu dex în interiorul procesului gradle. Aceasta este memoria maximă pentru întregul proces (gradle, inclusiv dex).

Ce spune avertismentul este că org.gradle.jvmargs ar trebui să fie >= javaMaxHeapSize (what you used previously for dex) + 512M (an estimation of what's needed for gradle own needs).

Deci, dacă doriți să utilizați dex în proces (care este mai rapid), nu ar trebui să vă pese de javaMaxHeapSize. Doar setați org.gradle.jvmargs la o valoare corectă pentru proiectul/mașina dumneavoastră.

jenglert

Se pare că există o eroare:

https://code.google.com/p/android/issues/detail?id=208214

Folosind com.android.tools.build:gradle:2.1.2 Am setat org.gradle.jvmargs=-Xmx3415M cu dexOptions.javaMaxHeapSize "2g" și mesajul de eroare a dispărut.

Hafizur Rahman
  • Vă rugăm să verificați la primul gradle.propertises din directorul rădăcină al proiectului dumneavoastră.

Dacă este absent, vă rugăm să creați un fișier ca acesta , apoi adăugați org.gradle.jvmargs=-Xmx1536m

în caz contrar, dacă există deja, vă rugăm să măriți dimensiunea.

M-am confruntat cu aceeași problemă, pe care am rezolvat-o în acest mod.

R01010010

Exemplu, în gradle.properties din rădăcina proiectului dvs.

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m

Станислав Полозов

Încercați acest lucru

defaultConfig {
    ...

    // Enabling multidex support.
    multiDexEnabled true
}

Comentarii

  • Bună ziua Răspunsul dvs. nu se adresează problemei, Vă înecați pe dvs. și pe utilizatorii SO. Vă rugăm să eliminați acest răspuns pentru a vă recupera ratingul pozitiv. Vă mulțumim. –  > Por fWd82.