Чтобы запустить 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 (Модуль: приложение):

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

13 ответов

Обновление от 25 июня 2017 г.

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

dexOptions {
   javaMaxHeapSize "2g"
}

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

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

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

gradle.properties.

org.gradle.jvmargs=-Xmx3072m

По умолчанию максимальный размер кучи Java составляет один гигабайт, но если вы изменили его в файле build.gradle...

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

dexOptions {
   javaMaxHeapSize "2g"
}

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

Заметки:

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

Добавьте в свой Build.gradle

android {
 dexOptions {
    javaMaxHeapSize "4g"
  }
}

Больше информации - Android Gradle: Что такое javaMaxHeapSize "4g"?

Просто оставьте это на свой gradle.properties:

org.gradle.jvmargs=-Xmx2048m 

Вы можете посмотреть на эту статью в качестве ссылки.

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

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

android {
  dexOptions {
    javaMaxHeapSize "4g"
  }
}

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

org.gradle.jvmargs=-Xmx2048m 

В моем случае проблема заключается в использовании процессора, там много процессов, запущенных во время сборки apk. Я просто убиваю некоторые процессы, такие как genymotion, skype, safari и т. Д., И затем отключаю кэши / перезапуска, это работает для меня.

Измените или создайте файл с именем 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/

Вы можете пойти дальше и изменить build.gradle вот так (как предложил Виреш Чарантимат):

android {
 dexOptions {
    javaMaxHeapSize "2g"
 }
}

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

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

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

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

Я точно уверен 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's needed for gradle own needs),

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

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

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

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

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

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

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

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

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

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

  • Пожалуйста, проверьте сначала gradle.propertises в корневом каталоге вашего проекта.

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

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

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

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

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" и сообщение об ошибке ушло.

Попробуй это

defaultConfig {
    ...

    // Enabling multidex support.
    multiDexEnabled true
}
Другие вопросы по тегам