web-dev-qa-db-fra.com

Pour exécuter dex en cours, le démon Gradle a besoin d'un segment de mémoire plus grand. Il a actuellement environ 910 MB

Je reçois cette erreur Gradle chaque fois que je lance mon application. L'erreur est:

Pour exécuter dex en cours, le démon Gradle a besoin d'un segment de mémoire plus grand. Il a actuellement environ 910 MB.

Pour des générations plus rapides, augmentez la taille de segment maximale du démon Gradle à plus de 2048 Mo.

Pour ce faire, définissez org.gradle.jvmargs = -Xmx2048M dans le projet gradle.properties. Pour plus d'informations, voir https://docs.gradle.org/current/userguide/build_environment.html

Voici mon fichier 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'
    }

Et voici mon fichier build.gradle (Projet):

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

et voici mon fichier 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
72

Ajouter dans votre Build.gradle

Android {
 dexOptions {
    javaMaxHeapSize "4g"
  }
}

Plus d'infos - Android Gradle: Qu'est-ce que javaMaxHeapSize "4g"?

50

Mise à jour du 25 juin 2017

Chez Google IO 2017, il y a eu des mises à jour concernant ce sujet. Il n'est plus recommandé de définir le drapeau sur les options dex, de sorte que si vous avez quelque chose comme la suivante, vous pouvez le supprimer.

dexOptions {
   javaMaxHeapSize "2g"
}

Réponse originale:

Android Studio 2.1 active Dex In Process qui partage le VM avec Gradle pour améliorer les temps de génération. Pour cette raison, il est nécessaire d'augmenter la taille du démon Gradle pour intégrer ces processus Dex.

Au moins, il faut 2 Go de mémoire, mais vous pouvez en essayer trois si vous en avez les moyens.

gradle.properties.

org.gradle.jvmargs=-Xmx3072m

Par défaut, la taille de segment Java max est de 1 Go, mais si vous l'avez modifiée dans le fichier build.gradle ...

build.gradle (App)

dexOptions {
   javaMaxHeapSize "2g"
}

... vous devez redimensionner la taille du démon Gradle en conséquence (elle doit être plus grande pour correspondre au tas).

Remarques:

  • S'il vous plaît, réalisez que les chiffres ci-dessus varient d'une machine à l'autre.
45
Sotti

Laissez simplement cela sur votre gradle.properties:

org.gradle.jvmargs=-Xmx2048m 

Vous pouvez regarder cet article comme référence.

21
lujop

Je sais que c'est trop tard pour la réponse mais j'espère que cela aidera à quelqu'un

J'ai essayé beaucoup de chose et beaucoup de recherche, mais rien ne fonctionne pour moi, y compris suivre et build.gradle (App) aussi ne fonctionne pas dans mon cas

Android {
  dexOptions {
    javaMaxHeapSize "4g"
  }
}

Aussi, vous pouvez essayer d'ajouter sur votre gradle.properties:

org.gradle.jvmargs=-Xmx2048m 

Dans mon cas, le problème est l'utilisation du processeur, il y a beaucoup de processus en cours pendant que je construis apk, je tue juste certains processus tels que genymotion, skype, safari, etc.

13
Ajay Pandya

Modifiez ou créez un fichier nommé gradle.properties dans le répertoire suivant.

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

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

Pour Windows, C:\Utilisateurs\USER_NAME.gradle\gradle.properties

et appliquez les modifications ci-dessus. Enfin, il devrait ressembler à

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

Veuillez vous référer à ce lien https://tausiq.wordpress.com/2015/02/24/Android-speed-up-gradle-build-process-in-Android-studio/

4

Vous pouvez aller de l'avant et changer build.gradle comme ça (comme l'a suggéré Veeresh Charantimath):

Android {
 dexOptions {
    javaMaxHeapSize "2g"
 }
}

Et ensuite, vous pourriez avoir à vous soucier de trucs MultiDex (vous en aurez besoin pour les gros projets Android). Mais votre problème peut être plus simple. Il est possible que vous compiliez et incluiez dans votre projet des bibliothèques inutiles. J'ai fait face à ce problème sur mon petit projet. Voici ce que j'ai fait pour résoudre ce problème:

J'ai enlevé ceci de build.gradle:

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

Et j'ai manuellement supprimé mon dossier de construction à la racine de l'application. Problème résolu.

2
Andrei

Je suis presque sûr que javaMaxHeapSize et org.gradle.jvmargs s’excluent mutuellement.

  • javaMaxHeapSize est l'ancienne façon de le faire, avec dex exécuté en dehors du processus. Ce sera un argument pour le processus dex.
  • org.gradle.jvmargs est la nouvelle façon de le faire, avec dex dans le processus gradle. C'est la mémoire maximale pour tout le processus (gradé, y compris dex)

L'avertissement dit, c'est que org.gradle.jvmargs devrait être> = javaMaxHeapSize (what you used previously for dex) + 512M (an estimation of what's needed for gradle own needs).

Donc, si vous voulez utiliser dex in process (ce qui est plus rapide), vous ne devriez pas vous soucier de javaMaxHeapSize. Il suffit de définir org.gradle.jvmargs sur une valeur correcte pour votre projet/machine.

1
mbonnin

Est-ce une erreur ou un avertissement?

Parfois, ce n'est qu'un avertissement et je peux réussir à le construire avec succès:

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

Donc, le problème qui peut empêcher une construction réussie peut être un autre ...

1
Pedro Reis

Dans WINDOW'S, ouvrez le fichier gradle.properties de ~\Users\ UserName \. Gradle comme indiqué ci-dessous: pour plus d'informations entrez la description du lien ici

enter image description here

et assurez-vous de définir sa valeur minimale à 4608M, comme indiqué ci-dessous pour des constructions plus rapides org.gradle.jvmargs = - Xmx4608M

Une fois que vous faites cela, vous pouvez voir la différence de vitesse entre le jour et la nuit pour la construction de votre application ...

1
Vincy

Exemple, dans gradle.properties de la racine de votre projet.

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

0
R01010010
  • Veuillez vérifier au début gradle.propertises au répertoire racine de votre projet.

S'il s'agit d'une absence, créez un fichier comme celui-ci, puis ajoutez org.gradle.jvmargs = -Xmx1536m

sinon, s'il y en a déjà une, augmentez la taille.

J'ai rencontré le même problème, où j'ai résolu par cette voie.

0
Hafizur Rahman

Il semble y avoir un bug:

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

Utilisation de com.Android.tools.build:gradle:2.1.2 Je règle org.gradle.jvmargs=-Xmx3415M avec dexOptions.javaMaxHeapSize "2g" et le message d'erreur disparaît.

0
jenglert