如何增加Gradle守护进程的最大堆大小?

61

当我签名一个APK时,我收到了这个消息:

To run dex in process, the Gradle daemon needs a larger heap.
It currently has 1024 MB.
For faster builds, increase the maximum heap size for the Gradle daemon to at least 4608 MB (based on the dexOptions.javaMaxHeapSize = 4g).
To do this set org.gradle.jvmargs=-Xmx4608M in the project gradle.properties.
For more information see https://docs.gradle.org/current/userguide/build_environment.html
在我的项目中,我没有一个gradle.properties文件,但我有一个名为gradle-wrapper.properties的文件。 我打开了那个文件并添加了这一行:org.gradle.jvmargs=-Xmx4608M。 之后,我尝试重新签名apk,但仍然收到增加Gradle堆大小的消息。 如何实现?

6个回答

76

如果你没有 gradle.properties 文件,那么到你的项目文件夹中去找 gradle 文件,创建一个文本文件并把它命名为 gradle.properties,去掉末尾的 .txt 并在该文件中添加下面的代码。

# 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.
org.gradle.jvmargs=-Xmx4096m

# 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

保存后,在Android Studio中打开您的项目,然后点击同步按钮。

希望这能解决您的问题,如果不能,请告诉我。


如果您已经在android文件夹中拥有gradle.properties文件,请添加以下行:org.gradle.jvmargs=-Xmx4096m - Amjad

32

我知道你说你的项目没有gradle.properties文件,但你可以在C:\Users\user\.gradle创建一个全局的gradle.properties文件,并添加以下内容:

 org.gradle.jvmargs=-Xmx4096M

请记得运行gradle --stop以结束任何先前的守护进程。


我已尝试过这个方法,但没有成功。我甚至创建了命令行变量GRADLE_USER_HOME=C:\Users<MY USER>.gradle。我还尝试将其放在平台/andorid/gradle.properties中,但它仍然使用2048MB。 - Mark A. Rupert

12
你可以尝试以下任一方法:
1)更改gradle.properties文件,并根据你的需求更改堆大小。
如果org.gradle.jvmargs=-Xmx2048M不足,则按照给定的方式更改为4096。

org.gradle.jvmargs=-Xmx4096M enter image description here

2) 从“帮助”菜单中选择“编辑自定义VM选项”。

它将打开studio.vmoptions / studio64.exe.vmoptions文件enter image description here

更改内容为

-Xms128m

-Xmx4096m

-XX:MaxPermSize=1024m

-XX:ReservedCodeCacheSize=200m

-XX:+UseCompressedOops

保存文件并重新启动Android Studio。


2
尝试使用此链接回答中提供的方法来解决问题:link
dexOptions 
   {
       javaMaxHeapSize "4g"
   }
....
....
....

1
这是一篇关于Android的问题,但在搜索scala out of memory gradle时也会出现,因此让我尝试节省一些可怜的灵魂搜索的时间。
默认情况下,Scala在编译时会分叉JVM,org.gradle.jvmargs不能应用于它。相反,您必须将args传递给gradle中的Scala插件。具体取决于您的设置在哪里,对我而言,这样可以解决问题:
tasks.withType(ScalaCompile) {
    configure(scalaCompileOptions.forkOptions) {
        jvmArgs = ['-Xss4m', '-Xmx2048m']
    }
}

如果您的构建包含多个子项目,请将此代码放在主要的build.gradle文件中subprojects { }块内。

-2
请将以下代码添加到您的 build.gradle 文件中。
 android {
     dexOptions {
     incremental true       
     javaMaxHeapSize "4g"
      }
    }

参考资料:来源


这并不是消息所要求的。也许你的方法是旧的? - NullPointerException
我还注意到我目前已经添加了这行代码,dexOptions { javaMaxHeapSize "4g" } - NullPointerException
你收到了什么信息? - Samir Bhatt
2
@VishvaDave,我已经添加了源链接,请检查一下。有很多问题都有相同的代码,并不意味着代码是复制的。几乎所有开发人员在所有应用程序开发中都使用此代码片段以解决大小问题。 - Samir Bhatt
3
@SamirBhatt,实际上这个问题是重复的。你应该在评论中提供可能的链接。避免回答这种重复的问题。 - Vidhi Dave
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接