Для запуска dex в процессе демона Gradle требуется большая куча. В настоящее время он имеет приблизительно 910 МБ

Я получаю эту ошибку Gradle при каждом запуске моего приложения. Ошибка:

Для запуска dex в процессе, для демона Gradle требуется большая куча. В настоящее время он имеет приблизительно 910 МБ.

Для более быстрой сборки увеличьте максимальный размер кучи для демона Gradle до более чем 2048 МБ.

Для этого установите org.gradle.jvmargs = -Xmx2048M в проекте gradle.properties. Для получения дополнительной информации см. https://docs.gradle.org/current/userguide/build_environment.html

Вот мой файл 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'
    }

И вот мой файл 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
}

и вот мой файл 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

Ответ 2

Обновление с 25 июня 2017 года

В Google IO 2017 появились некоторые обновления по этой теме. Не рекомендуется больше устанавливать флаг в dexOptions, поэтому, если у вас есть что-то вроде следующего, вы можете его удалить.

dexOptions {
   javaMaxHeapSize "2g"
}

Оригинальный ответ:

Android Studio 2.1 включает Dex In Process, который совместно использует VM с Gradle для улучшения времени сборки. В связи с этим необходимо увеличить размер демона Gradle, чтобы включить эти процессы Dex.

По крайней мере, это необходимо 2 гигабайта памяти, но вы можете попробовать с тремя, если можете себе это позволить.

gradle.properties.

org.gradle.jvmargs=-Xmx3072m

По умолчанию размер кучи Java max - это один концерт, но если вы изменили его в файле build.gradle...

build.gradle(приложение)

dexOptions {
   javaMaxHeapSize "2g"
}

... вы должны соответственно изменить размер демона Gradle (должен быть больше, чтобы соответствовать куче).

Примечания:

  • Пожалуйста, понимайте, что выше числа варьируются от машины к машине.

Ответ 4

Я знаю это слишком поздно для ответа, но надеюсь, что это будет полезно для кого-то

Я перепробовал много вещей и много поиска, но у меня ничего не работает, включая следующее, и build.gradle (приложение) также не работает в моем случае

android {
  dexOptions {
    javaMaxHeapSize "4g"
  }
}

Также вы можете попробовать добавить на свой gradle.properties:

org.gradle.jvmargs=-Xmx2048m 

В моем случае проблема заключается в использовании процессора, при этом я запускаю множество процессов, а я просто убиваю некоторые процессы, такие как genymotion, skype, safari и т.д., А затем делаю недействительными кэши/перезапуск, это работает для меня.

Ответ 5

Измените или создайте файл с именем gradle.properties в следующем каталоге.

Для Mac, /Users/USER _NAME/.gradle/ gradle.properties

Для Linux, /home/USER _NAME/.gradle/ gradle.properties

Для Windows, C:\Users\USER_NAME.gradle\ gradle.properties

и примените указанные выше изменения. Наконец, это должно выглядеть так:

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

Пожалуйста, перейдите по этой ссылке https://tausiq.wordpress.com/2015/02/24/android-speed-up-gradle-build-process-in-android-studio/

Ответ 6

Вы можете пойти и изменить build.gradle как это (например, предлагаемый Veeresh Charantimath):

android {
 dexOptions {
    javaMaxHeapSize "2g"
 }
}

И тогда вам, возможно, придется возиться с материалом MultiDex (вам это понадобится для больших проектов Android). Но ваша проблема может быть проще. Есть вероятность, что вы скомпилируете и включите в свой проект некоторые не нужные библиотеки. Я столкнулся с этим вопросом в своем крошечном проекте. Вот что я сделал, чтобы исправить это:

Я удалил это из build.gradle:

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

И я вручную удалил папку с файлами из корня приложения. Проблема решена.

Ответ 7

Это ошибка или предупреждение?

Иногда это только предупреждение, и я могу успешно его создать:

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

Таким образом, проблема, которая может помешать успешной сборке, может быть другой...

Ответ 8

В WINDOW откройте gradle.properties из ~\Users\ Имя_пользователя \. gradle, как показано ниже: для получения дополнительной информации введите ссылку здесь

введите описание изображения здесь

и убедитесь, что его значение минимально до 4608M, как показано ниже, для более быстрой сборки org.gradle.jvmargs = -Xmx4608M

Как только вы это сделаете, вы сможете увидеть разницу в день и ночь в скорости создания вашего приложения...

Ответ 9

Я уверен, что javaMaxHeapSize и org.gradle.jvmargs являются взаимоисключающими.

  • javaMaxHeapSize - это старый способ сделать это, при этом dex запускается вне процесса. Это будет аргументом для процесса dex.
  • org.gradle.jvmargs - это новый способ сделать это с помощью dex внутри процесса gradle. Это максимальная память для всего процесса (gradle, включая dex)

В предупреждении говорится, что org.gradle.jvmargs должен быть >= javaMaxHeapSize (what you used previously for dex) + 512M (an estimation of what needed for gradle own needs).

Итак, если вы хотите использовать dex в процессе (что быстрее), вам не нужно заботиться о javaMaxHeapSize. Просто установите org.gradle.jvmargs на правильное значение для вашего проекта/машины.

Ответ 10

Кажется, есть ошибка:

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

Используя com.android.tools.build:gradle:2.1.2, я установил org.gradle.jvmargs=-Xmx3415M с dexOptions.javaMaxHeapSize "2g", и сообщение об ошибке исчезло.

Ответ 11

  • Сначала проверьте gradle.propertises в корневом каталоге проекта.

Если это отсутствие, создайте файл так, как показано на рисунке, а затем добавьте org.gradle.jvmargs = -Xmx1536m

В противном случае, если вы уже там, пожалуйста, увеличьте размер.

У меня возникла такая же проблема, когда я решил таким образом.

Ответ 12

Пример, в gradle.properties вашего корня проекта.

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

Ответ 13

Попробуйте это

defaultConfig {
    ...

    // Enabling multidex support.
    multiDexEnabled true
}