为了在进程中运行dex,Gradle守护进程需要一个更大的堆。 它目前大约有910 MB

每次运行我的应用程序时,都会收到这个Gradle错误。 错误是:

为了在进程中运行dex,Gradle守护进程需要一个更大的堆。 它目前大约有910 MB。

要获得更快的构build,请将Gradle守护进程的最大堆大小增加到2048 MB以上。

为此,在项目gradle.properties中设置org.gradle.jvmargs = -Xmx2048M。 有关更多信息,请参阅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 (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 

添加你的Build.gradle

 android { dexOptions { javaMaxHeapSize "4g" } } 

更多信息 – Android Gradle:什么是javaMaxHeapSize“4g”?

2017年6月25日起更新

在谷歌IO 2017年有一些关于这个话题的更新。 现在不推荐在dexOptions上设置标志,所以如果你有下一个类似的东西,你可以删除它。

 dexOptions { javaMaxHeapSize "2g" } 
  • 来源: 加速你的Android Gradle构build

原始答案:

Android Studio 2.1支持使用Gradle共享VM的Dex In Process来提高构build时间。 由于这个原因,有必要增加Gradle守护进程的大小来整合这些Dex进程。

至less有2个内存是必要的,但如果你能负担得起,你可以尝试三个。

gradle.properties。

 org.gradle.jvmargs=-Xmx3072m 

默认情况下,Java最大堆大小是一个演出,但如果你已经在build.gradle文件上修改它…

build.gradle(App)

 dexOptions { javaMaxHeapSize "2g" } 

…你必须相应地调整Gradle守护进程的大小(必须更大才能适应堆)。

  • 资源

    1. 官方博客文章Reto Meier
    2. Android开发人员的官方video
    3. DexOptions文档。

笔记:

  • 请认识到上述数字因机器而异。

简单地把它留在你的gradle.properties上:

 org.gradle.jvmargs=-Xmx2048m 

你可以看看那篇文章作为参考。

我知道答案为时已晚,但希望对某人有帮助

我已经尝试了很多东西和search很多,但没有为我工作,包括以下和gradle.properties也不适合我的情况

 android { dexOptions { javaMaxHeapSize "4g" } } 

你也可以尝试添加你的gradle.properties:

 org.gradle.jvmargs=-Xmx2048m 

在我的情况下,问题是CPU利用率有很多进程运行,而我build立apk我只是杀死像genymotion,Skype,Safari等一些进程,并无效caching/重新启动它适用于我。

在以下目录中修改或创build一个名为gradle.properties的文件。

对于Mac,/用户/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 (就像Veeresh Charantimathbuild议的那样):

 android { dexOptions { javaMaxHeapSize "2g" } } 

然后,你可能不得不乱用MultiDex的东西 (你将需要它的大型Android项目)。 但是你的问题可能会更简单。 有一些机会,你编译和包含在你的项目中一些不需要的库。 我在这个小小的项目上遇到了这个问题。 这是我做了什么来解决它:

我从build.gradle删除了这个:

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

我手动从应用程序根目录中删除我的生成文件夹。 问题解决了。

这是错误还是警告?

有时这只是一个警告,我可以成功地build立它:

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

所以可能阻止成功构build的问题可能是另一个…

我很确定javaMaxHeapSizeorg.gradle.jvmargs是互斥的。

  • javaMaxHeapSize是这样做的老方法,dex在进程之外运行。 这将是dex进程的一个论据。
  • org.gradle.jvmargs是这样做的新方法,在gradle进程中使用dex。 这是整个过程的最大记忆(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设置为您的项目/机器的正确值即可。

似乎有一个错误:

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

使用com.android.tools.build:gradle:2.1.2我用dexOptions.javaMaxHeapSize "2g"设置了org.gradle.jvmargs=-Xmx3415M ,并且错误信息消失了。

在WINDOW'S中打开〜\ Users \ UserName \ .gradle中的gradle.properties,如下所示:更多信息请在这里input链接描述

在这里输入图像说明

并确保将其值设置为最小值为4608M,如下所示,以便构build速度更快 org.gradle.jvmargs = -Xmx4608M

一旦你这样做,那么你可以看到在build立你的应用程序的速度日夜的差异…

  • 请首先检查项目根目录下的gradle.propertises。

如果没有,请创build一个像这样的文件,然后添加org.gradle.jvmargs = -Xmx1536m

否则如果已经在那里,请增加尺寸。

我面临同样的问题,我已经通过这种方式解决了。

尝试这个

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