Android的谷歌工作室罐子引起GC开销超限错误罐子、开销、错误、工作室

2023-09-12 21:40:09 作者:倾城琉璃

我使用的是Android工作室在OSX。我收到此错误信息:

  

失败:建立失败,一个异常

        

出了什么问题:   执行失败的任务:应用程序:preDexDebug。   com.android.ide.common.internal.LoggedErrorException:无法运行命令:   /应用/ Android的Studio.app / SDK /集结工具/ Android为4.4W / DX --dex --output /Users/alex/AndroidStudioProjects/SilentSMS/app/build/intermediates/$p$p-dexed/debug/android-4.3_r2.1-f22bbff4d1017230e169a4844a9c2195f13060d2.jar /Users/alex/AndroidStudioProjects/SilentSMS/app/libs/android-4.3_r2.1.jar

     

错误code:   3   输出:

  

 意外的顶级错误:
java.lang.OutOfMemoryError:GC开销超过限制
    在com.android.dx.cf。code.RopperMachine.getSources(RopperMachine.java:665)
    在com.android.dx.cf。code.RopperMachine.run(RopperMachine.java:288)
    在com.android.dx.cf。code.Simulator $ SimVisitor.visitLocal(Simulator.java:612)
    。在com.android.dx.cf code.Byte codeArray.parseInstruction(字节codeArray.java:412)
    在com.android.dx.cf。code.Simulator.simulate(Simulator.java:94)
    在com.android.dx.cf。code.Ropper.processBlock(Ropper.java:782)
    在com.android.dx.cf。code.Ropper.doit(Ropper.java:737)
    在com.android.dx.cf。code.Ropper.convert(Ropper.java:346)
    在com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:282)
    在com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:139)
    在com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:94)
    在com.android.dx.command.dexer.Main.processClass(Main.java:682)
    在com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
    在com.android.dx.command.dexer.Main.access $ 600(Main.java:78)
    在com.android.dx.command.dexer.Main $ 1.processFileBytes(Main.java:572)
    在com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
    在com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
    在com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
    在com.android.dx.command.dexer.Main.processOne(Main.java:596)
    在com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
    在com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
    在com.android.dx.command.dexer.Main.run(Main.java:230)
    在com.android.dx.command.dexer.Main.main(Main.java:199)
    在com.android.dx.command.Main.main(Main.java:103)
 

我使用这个库:

http://grep$c$c.com/snapshot/repository.grep$c$c.com/java/ext/com.google.android/android/4.3_r2.1/

我把罐子,把它添加到我的项目 - 这个项目我想打造的是:

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

我的理解是,因为我的XMS和XMX值太低。我增加了他们:

/应用/ Android的Studio.app /斌/ idea.vmoptions因此现在说:

-Xms256m -Xmx1024m

但我仍然得到错误。任何想法,为什么会引起的。除了silentSMS应用程序是一个Eclipse项目,我移植了code交给机器人工作室我已经什么也没有改变。在机器人工作室察觉错误的方面 - 它没有,一切看起来不错。帮助将不胜AP preciated。 谢谢

解决方案

我觉得有提高德兴操作的堆限制一个单独的方法。添加到您的机器人封在 build.gradle 文件:

  dexOptions {
    javaMaxHeapSize4G
}
 
谷歌发布首个测试版Android 12L 以更好适配大屏设备

,看看有没有什么帮助。

(想法礼貌的this从斯科特·巴塔答案)

I am using Android Studio on OSX. I am getting this error message:

FAILURE: Build failed with an exception.

What went wrong: Execution failed for task ':app:preDexDebug'. com.android.ide.common.internal.LoggedErrorException: Failed to run command: /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

Error Code: 3 Output:

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)

I am using this library:

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

I pulled the jar and added it to my project - the project I am trying to build is:

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

I understand it is because my xms and xmx values are too low. I increased them in:

/Applications/Android Studio.app/bin/idea.vmoptions so that it now says:

-Xms256m -Xmx1024m

however i still get the error. Any idea why this would be caused. Apart from the silentSMS app being an Eclipse project and me porting the code over to Android Studio I have changed nothing. In terms of Android Studio spotting errors - it doesnt, everything else looks fine. Help would be greatly appreciated. Thanks

解决方案

I think there's a separate way to raise the heap limit of the dexing operation. Add this to your android closure in your build.gradle file:

dexOptions {
    javaMaxHeapSize "4g"
}

and see if that helps.

(idea courtesy of this answer from Scott Barta)