如果发生错误,有没有办法让DexGuard退出并出现错误?

时间:2014-03-13 17:17:52

标签: android ant jenkins proguard dexguard

我目前正在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异常的后期构建步骤。如果发现它将构建降级为失败。

1 个答案:

答案 0 :(得分:1)

DexGuard目前忽略了无法将Java字节码转换为Dalvik字节码的方法,无论出于何种原因 - 特别是损坏的输入代码。在这种情况下,它看起来更像是DexGuard本身的一个错误。我们会尽快修复它,我们会考虑添加一个标志来停止并显示错误状态。

(我是ProGuard和DexGuard的首席开发人员)