我在OS X上使用Android Studio . 我收到此错误消息:
FAILURE:构建因异常而失败 . 出了什么问题:任务':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发现错误而言 - 它没有,其他一切看起来都很好 .
7 回答
我强制从taskmanger关闭所有Java.exe,重新启动Android Studio,它对我有用
对我而言,我在这里看到的答案是有效的 . 我猜想让CPU工作非常努力会使计算机变热 . 在我关闭消耗大量CPU(如chrome)的程序并冷却我的笔记本电脑之后问题就消失了 .
供参考:java.exe进程的CPU占96%-97%,内存占用率超过2,000,000K(实际上是与gradle相关的进程) .
将其添加到build.gradle文件中
我认为有一种单独的方法来提高dexing操作的堆限制 . 将其添加到
build.gradle
文件中的android
闭包中:看看是否有帮助 .
(想法由this answer from Scott Barta提供)
在我的情况下,增加 heap-size 看起来像这样:
使用Android Studio 1.1.0
将上面的代码放在 Build.gradle 文件中 .
这个新问题是由最新版本的Android引起的 .
转到项目根文件夹,打开
gradle.properties
,然后添加以下选项:然后在
build.gradle
文件中添加以下更改:我禁用了我的即时运行:
菜单首选项→构建→即时运行"Enable Instant Run to hot swap code"
我想是即时运行会使构建变慢并创建一个大尺寸的pidXXX.hprof文件,导致超出AndroidStudio gc开销限制 .
(我的设备SDK是19.)