Android Studio Google JAR文件导致GC开销限制超出错误

我在OS X上使用Android Studio。我收到此错误消息:

失败:生成失败,出现异常。

  • 出了什么问题:执行任务':app:preDexDebug'失败。 com.android.ide.common.internal.LoggedErrorException:无法运行命令:/ Applications / Android Studio.app/sdk/build-tools/android-4.4W/dx --dex --output / Users / alex / AndroidStudioProjects / SilentSMS / app / build / intermediates / pre-dexed / debug / android-4.3_r2.1-f22bbff4d1017230e169a4844a9c2195f13060d2.jar /Users/alex/AndroidStudioProjects/SilentSMS/app/libs/android-4.3_r2.1.jar

    错误代码:3输出:

  •   UNEXPECTED TOP-LEVEL ERROR:
      java.lang.OutOfMemoryError: GC overhead limit exceeded
          at com.android.dx.cf.code.RopperMachine.getSources(RopperMachine.java:665)
          at com.android.dx.cf.code.RopperMachine.run(RopperMachine.java:288)
          at com.android.dx.cf.code.Simulator$SimVisitor.visitLocal(Simulator.java:612)
          at com.android.dx.cf.code.BytecodeArray.parseInstruction(BytecodeArray.java:412)
          at com.android.dx.cf.code.Simulator.simulate(Simulator.java:94)
          at com.android.dx.cf.code.Ropper.processBlock(Ropper.java:782)
          at com.android.dx.cf.code.Ropper.doit(Ropper.java:737)
          at com.android.dx.cf.code.Ropper.convert(Ropper.java:346)
          at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:282)
          at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:139)
          at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:94)
          at com.android.dx.command.dexer.Main.processClass(Main.java:682)
          at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
          at com.android.dx.command.dexer.Main.access$600(Main.java:78)
          at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
          at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
          at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
          at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
          at com.android.dx.command.dexer.Main.processOne(Main.java:596)
          at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
          at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
          at com.android.dx.command.dexer.Main.run(Main.java:230)
          at com.android.dx.command.dexer.Main.main(Main.java:199)
          at com.android.dx.command.Main.main(Main.java:103)
    

    我正在使用这个库:

    http://grepcode.com/snapshot/repository.grepcode.com/java/ext/com.google.android/android/4.3_r2.1/

    我将JAR文件拉出来并添加到我的项目中 - 我正在尝试构建的项目是:

    https://github.com/domi007/silentSMS/

    我知道这是因为我的xms和xmx值太低。 我增加了他们:

    / Applications / Android Studio.app/bin/idea.vmoptions,以便它现在说:

    -Xms256m
    -Xmx1024m
    

    但是,我仍然得到错误。 这可能是由什么引起的? 除了silentSMS应用程序是一个Eclipse项目和我将代码移植到Android Studio之外,我没有改变任何东西。 就Android Studio发现错误而言 - 它不会,而且其他一切都看起来不错。


    我认为有一种独立的方式来提高德兴运营的堆积极限。 将此添加到您的build.gradle文件中的android闭包中:

    dexOptions {
        javaMaxHeapSize "4g"
    }
    

    并看看是否有帮助。

    (想法来自Scott Barta的这个答案)


    在我的情况下,增加堆大小看起来像这样:

    使用Android Studio 1.1.0

    android {
        dexOptions {
            incremental true
            javaMaxHeapSize "2048M"
        }
    }
    

    将上面的代码放到Build.gradle文件中。


    这个新问题是由最新版本的Android造成的。

    转到您的项目根文件夹,打开gradle.properties ,然后添加以下选项:

    org.gradle.daemon=true
    
    org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
    
    org.gradle.parallel=true
    
    org.gradle.configureondemand=true
    

    然后将这些更改添加到build.gradle文件中:

    dexOptions {
            incremental = true
            preDexLibraries = false
            javaMaxHeapSize "4g" // 2g should be also OK
    }
    
    链接地址: http://www.djcxy.com/p/62797.html

    上一篇: Android Studio Google JAR file causing GC overhead limit exceeded error

    下一篇: Can't Find Theme.AppCompat.Light for New Android ActionBar Support