R8 问题:由于错误 GC overhead limit exceeded,无法设置 Proguard minifyEnabled

R8 issue: Unable to set up Proguard minifyEnabled because of error GC overhead limit exceeded

使用 minifyEnabled true 选项生成发布包时出错。这是给我错误的 Gradle 设置:

buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

我还看到任务 transformClassesAndResourcesWithR8For... 花费了太多时间(最多 10-20 分钟)

错误: java.lang.OutOfMemoryError: GC overhead limit exceeded 在 Gradle 任务中 transformClassesAndResourcesWithR8ForCommonRelease

R8 是来自 Google 的新代码收缩器。如果您使用的是 Gradle 插件版本 3.4.0 及以上,R8 默认开启。

出现此问题是因为 R8 和 Proguard 无法正常协同工作。 添加行到 gradle.properties 修复它。

android.enableR8=false

此外,您可能会发现此信息很有用https://www.reddit.com/r/androiddev/comments/bae6ny/r8_and_proguard/ekb4m7d/

代替关闭 R8 的解决方案是将 gradle 守护程序的 JVM 堆大小增加 adding/changing gradle.propertiesorg.gradle.jvmargs 的值(在Adroid Studio 项目的根目录):

  org.gradle.jvmargs=-Xmx2G

如果这还不够,请尝试使用 4G。 R8内存占用一直在增长,3.4部分应用出现OOM问题