我最近将项目从eclipse / ant转换为使用Android Studio / Gradle.我的调试版本运行正常,但是当我尝试使用proguard启用发布版本时,它会失败并出现以下错误
16:26:13.437 [ERROR] [system.err] Unexpected error while computing stack sizes:
16:26:13.438 [ERROR] [system.err] Class = [com/a/a/a/d/d]
16:26:13.438 [ERROR] [system.err] Method = [<clinit>()V]
16:26:13.438 [ERROR] [system.err] Exception = [java.lang.IllegalArgumentException] (Stack size becomes negative after instruction [143] swap in [com/a/a/a/d/d.<clinit>()V])
我已经为我的eclipse项目使用了相同的proguard.txt,它工作正常,因此它表明Gradle Android插件存在某种问题.有谁遇到过类似的问题?我的proguard配置 – http://pastebin.com/2gsNUmeD和完全gradle输出http://pastebin.com/TAvMUSrR
解决方法:
ProGuard确实应该在Ant,Eclipse和Gradle中表现相同.您应该检查您的构建版本是否使用不同版本的ProGuard.您可以在控制台日志中看到该版本.如果您知道正在使用哪个ProGuard jar,您也可以输入java -jar proguard.jar来获取该版本.
该错误消息表明ProGuard优化步骤中存在错误.希望错误发生在旧版本中,而不是在较新版本中.然后你可以简单地升级jar.否则,您可以在ProGuard’s bug tracker上报告,最好有足够的信息来重现问题.作为解决方法,您可以使用-dontoptimize选项禁用优化.