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

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 important. Il a actuellement environ 910 Mo.

Pour des versions plus rapides, augmentez la taille maximale de segment de mémoire pour le 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 { comstackSdkVersion 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 { comstack fileTree(dir: 'libs', include: ['*.jar']) testComstack 'junit:junit:4.12' comstack 'com.android.support:appcompat-v7:23.3.0' comstack 'com.android.support:design:23.3.0' } 

Et voici mon fichier 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 } 

et voici mon fichier gradle.properties:

 # Project-wide Gradle settings. # IDE (eg 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 

Ajouter dans votre build.gradle

 android { dexOptions { javaMaxHeapSize "4g" } } 

Plus d’infos – Android Gradle: Qu’est-ce que javaMaxHeapSize “4g”?

Mise à jour du 25 juin 2017

À Google IO 2017, il y a eu des mises à jour sur ce sujet. Il n’est plus recommandé de définir le drapeau sur le dexOptions, donc si vous avez quelque chose comme le suivant, vous pouvez le supprimer.

 dexOptions { javaMaxHeapSize "2g" } 
  • Source: Accélérer vos versions Android Gradle

Réponse originale:

Android Studio 2.1 permet à Dex In Process qui partage la VM avec Gradle d’améliorer les temps de construction. De ce fait, 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 essayer avec trois si vous pouvez vous le permettre.

gradle.properties.

 org.gradle.jvmargs=-Xmx3072m 

Par défaut, la taille maximale du tas Java est d’un concert, mais si vous l’avez modifié dans le fichier build.gradle …

build.gradle (App)

 dexOptions { javaMaxHeapSize "2g" } 

… vous devez redimensionner la taille du démon Gradle en conséquence (il doit être plus grand pour s’adapter au tas).

  • Ressources

    1. Article de blog officiel de Reto Meier
    2. Vidéo officielle dans les développeurs Android
    3. DexOptions docs.

Remarques:

  • Veuillez vous rendre compte que les chiffres ci-dessus varient d’une machine à l’autre.

Laissez simplement cela sur votre gradle.properties:

 org.gradle.jvmargs=-Xmx2048m 

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

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

J’ai essayé beaucoup de choses et beaucoup de recherches, mais rien ne fonctionne pour moi, notamment les pages suivantes et gradle.properties ne fonctionnent pas non plus dans mon cas

 android { dexOptions { javaMaxHeapSize "4g" } } 

Vous pouvez également essayer 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 d’exécution alors que je construis apk, je supprime juste certains processus comme genymotion, skype, safari, etc.

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: \ Users \ USER_NAME.gradle \ gradle.properties

et appliquer les modifications ci-dessus. Enfin ça 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/

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

 android { dexOptions { javaMaxHeapSize "2g" } } 

Et puis vous pourriez avoir à jouer avec MultiDex (vous en aurez besoin pour les gros projets Android). Mais votre problème peut être plus simple. Il y a des chances 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 le réparer:

Je l’ai retiré de build.gradle :

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

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

Est-ce une erreur ou un avertissement?

Parfois, il ne s’agit que d’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 en être un autre …

Je suis presque sûr que javaMaxHeapSize et org.gradle.jvmargs sont mutuellement exclusifs.

  • javaMaxHeapSize est l’ancienne méthode, 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 procéder, avec dex dans le processus de graduation. Ceci est la mémoire maximale pour l’ensemble du processus (gradle, y compris dex)

L’avertissement indique 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 en cours (ce qui est plus rapide), vous ne devriez pas vous soucier de javaMaxHeapSize . Il suffit de définir org.gradle.jvmargs à une valeur correcte pour votre projet / machine.

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 J’ai défini org.gradle.jvmargs=-Xmx3415M avec dexOptions.javaMaxHeapSize "2g" et le message d’erreur est parti.

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

entrer la description de l'image ici

et assurez-vous de définir sa valeur au minimum à 4608M comme indiqué ci-dessous pour les versions plus rapides org.gradle.jvmargs = -Xmx4608M

Une fois que vous faites cela, vous pouvez voir la différence de vitesse jour / nuit pour construire votre application …

  • S’il vous plaît vérifiez d’abord gradle.propertises dans le répertoire racine de votre projet.

Si c’est l’absence, veuillez créer un fichier comme ceci, puis ajoutez org.gradle.jvmargs = -Xmx1536m

sinon si déjà là, veuillez augmenter la taille.

J’ai rencontré le même problème, où j’ai résolu de cette manière.

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

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

Essaye ça

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