在Android Studio 3.4中启用R8 Shrinker时,超出了GC开销限制

时间:2019-01-12 17:18:10

标签: android android-studio r8 android-studio-3.4

我正在使用Android Studio 3.4(金丝雀9),当我构建应用程序时,它失败并出现以下错误

  

任务:app:transformClassesAndResourcesWithR8ForDebug

     

R8是   实验功能。如果遇到任何问题,请提交错误   在https://issuetracker.google.com,使用“收缩器(R8)”作为组件   名称。您可以通过使用以下命令更新gradle.properties来禁用R8:   ‘android.enableR8 = false’。

     

AGPBI:{“种类”:“警告”,“文本”:“缺少类别:   java.lang.instrument.ClassFileTransformer“,”源“:[{}],”工具“:” D8“}

     

任务:app:transformClassesAndResourcesWithR8ForDebug失败

     

失败:构建失败,并出现异常。

     
      
  • 出了什么问题:任务':app:transformClassesAndResourcesWithR8ForDebug'的执行失败。
  •   
     

超出了GC开销限制

当我通过将android.enableR8=false放入 gradle.properties 来禁用R8时。一切正常。

那么如何在不禁用R8 Shrinker的情况下解决此错误?因为我真的很想测试R8的功能。

2 个答案:

答案 0 :(得分:6)

正如您所说的,您没有使用任何自定义的jvs arg,请尝试一下。

@media (min-width: 576px) { .container{ max-width:100% !important; } } 文件中,尝试memory settings的多个值。例如,尝试设置

gradle.properties

如评论部分所建议:

  

指定用于守护进程的JVM参数。

     

该设置对于调整内存设置特别有用。

     

org.gradle.jvmargs = -Xmx1536m

我在项目中使用了R8,并且一切正常。

答案 1 :(得分:1)

有时添加JVM堆内存并不能解决问题,尤其是在内存有限的系统上,还会导致其他问题。我的建议是尝试更换垃圾收集器。

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC

超出 GC 开销限制是 Java 8 垃圾收集器(并行)默认抛出的异常。就我而言,它解决了问题。