我目前正在Jenkins服务器上使用ANT构建一个Android应用程序。
DexGuard设置为在custom_rules.xml中发布时运行。
目前DexGuard尝试转换方法时存在问题:
[dexguard] Unexpected error while converting:
[dexguard] Class = [o/?]
[dexguard] Method = [?(Ljava/lang/String;)Lo/?;]
[dexguard] Exception = [java.lang.IllegalStateException] (Variable v17 too large for instruction [neg-int v17, v17])
[dexguard] java.lang.IllegalStateException: Variable v17 too large for instruction [neg-int v17, v17]
...
Stack trace
...
[dexguard] Not converting this method
我的问题是,有没有办法让DexGuard以错误状态退出,以便ANT或Jenkins可以将构建标记为失败?
目前它只是打印堆栈跟踪并继续。
我目前正在使用Jenkins的Text-finder插件作为匹配DexGuard异常的后期构建步骤。如果发现它将构建降级为失败。
答案 0 :(得分:1)
DexGuard目前忽略了无法将Java字节码转换为Dalvik字节码的方法,无论出于何种原因 - 特别是损坏的输入代码。在这种情况下,它看起来更像是DexGuard本身的一个错误。我们会尽快修复它,我们会考虑添加一个标志来停止并显示错误状态。
(我是ProGuard和DexGuard的首席开发人员)