Minify WithR8 抛出 java.lang.OutOfMemoryError:Java 堆空间

Vic*_*rte 6 android jvm heap-memory kotlin

尝试使用以下命令从命令行编译我的应用程序时遇到问题:

./Project/gradlew -b ./Project/sampleapp/build.gradle assembleProd -x lint --stacktrace

但命令抛出以下错误:

Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete
        at Version.fakeStackEntry(Version_2.2.71.java:0)
        at com.android.tools.r8.utils.a0.a(SourceFile:89)
        at com.android.tools.r8.R8.a(R8.java:34)
        at com.android.tools.r8.R8.run(R8.java:3)
        at com.android.builder.dexing.R8Tool.runR8(r8Tool.kt:259)
        at com.android.build.gradle.internal.tasks.R8Task$Companion.shrink(R8Task.kt:480)
        at com.android.build.gradle.internal.tasks.R8Task.doTaskAction(R8Task.kt:341)
        at com.android.build.gradle.internal.tasks.NonIncrementalTask$taskAction$$inlined$recordTaskAction$1.invoke(BaseTask.kt:63)
        at com.android.build.gradle.internal.tasks.Blocks.recordSpan(Blocks.java:51)
        at com.android.build.gradle.internal.tasks.NonIncrementalTask.taskAction(NonIncrementalTask.kt:90)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
        ... 94 more
Caused by: java.lang.OutOfMemoryError: Java heap space
Run Code Online (Sandbox Code Playgroud)

我已经尝试了在 stackoverflow、此处此处找到的许多解决方案,但没有一个有效。

  1. 更改了 gradle.properties:
org.gradle.jvmargs=-Xms4096m -Xmx8192m -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError
Run Code Online (Sandbox Code Playgroud)
  1. 更改了 gradlew 文件以添加 JAVA_OPTS 和 GRADLE_OPTS:
DEFAULT_JVM_OPTS="-Xms4096m -Xmx8192m"
JAVA_OPTS="-Xms4096m -Xmx8192m"
GRADLE_OPTS="-Xms4096m -Xmx8192m"
Run Code Online (Sandbox Code Playgroud)
  1. 更改了 zshrc:
export JAVA_OPTS="-Xms4096m -Xmx8192m"
export GRADLE_OPTS="-Xms4096m -Xmx8192m"
Run Code Online (Sandbox Code Playgroud)
  1. 将 dexOptions javaMaxHeapSize 添加到 build.gradle:
    dexOptions {
        javaMaxHeapSize "8g"
    }
Run Code Online (Sandbox Code Playgroud)

没有任何效果:( 我使用的是带有 16GB RAM 的 MacOs 11.6.2

我不知道该再尝试什么了。

Vic*_*rte 8

org.gradle.jvmargs=-Xms4096m -Xmx8192m -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError通过将配置放入全局文件中(不仅在项目属性中gradle.properties找到),问题得到了解决。~/.gradle/gradle.properties