Чтобы запустить 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 Gradle
Оригинальный ответ:
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
}