3

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

4

2 回答 2

4

替代 R8 的解决方案是通过添加/更改 in 的值(在 Adroid Studio 项目的根目录中)来提高 gradle 守护程序的 JVM 堆org.gradle.jvmargs大小gradle.properties

  org.gradle.jvmargs=-Xmx2G

如果这还不够,请尝试使用 4G。R8 的内存使用量一直在增长,对于 3.4,一些应用程序出现了 OOM 问题。

于 2019-08-14T09:32:08.743 回答
-1

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/

于 2019-08-09T11:21:24.957 回答