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

问题描述 投票:0回答:7

签署 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 堆大小增加的消息。

如何实现?

android gradle android-gradle-plugin
7个回答
80
投票

如果您没有

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 中打开您的项目,然后单击“立即同步”。

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


33
投票

我知道你说你的项目没有

gradle.properties
但你可以在
C:\Users\user\.gradle
中创建一个全局项目并添加:

 org.gradle.jvmargs=-Xmx4096M

并记住运行

gradle --stop
来杀死任何以前的守护进程。


12
投票

您可以尝试以下任一方法

1)更改 gradle.properties 文件并根据您的要求更改堆大小。

如果 org.gradle.jvmargs=-Xmx2048M 不够,则更改为给定的 4096

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

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

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

将内容更改为

-Xms128米

-Xmx4096米

-XX:MaxPermSize=1024m

-XX:ReservedCodeCacheSize=200m

-XX:+UseCompressedOops

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


2
投票

试试这个链接答案

dexOptions 
   {
       javaMaxHeapSize "4g"
   }
....
....
....

2
投票

这是 Android 问题,但无论如何都会弹出 scala 内存不足 gradle 搜索,所以让我尝试节省一些可怜的灵魂的搜索时间。

Scala 在编译时默认分叉 JVM,并且 org.gradle.jvmargs 不适用于它。相反,您必须将参数传递给 gradle 中的 Scala 插件。这取决于您的特定设置,对我来说,这有效:

tasks.withType(ScalaCompile) {
    configure(scalaCompileOptions.forkOptions) {
        jvmArgs = ['-Xss4m', '-Xmx2048m']
    }
}

如果您的构建由多个子项目组成,请将其放入主

build.gradle
内的 subprojects { } 块中。


0
投票

如果您想为 Kotlin 执行此操作并且不想添加 gradle.properties 文件,请将其添加到您的 build.gradle.kts

tasks.compileKotlin {
    kotlinDaemonJvmArguments.add("-Xmx512m")
}

注意:这假设:kotlin("jvm") 版本 "1.9.23" + gradleVersion = "8.1.1"


-2
投票

将以下代码添加到您的 build.gradle 文件中。

 android {
     dexOptions {
     incremental true       
     javaMaxHeapSize "4g"
      }
    }

参考:来源

© www.soinside.com 2019 - 2024. All rights reserved.