1

現在、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

私の質問は、ANT または Jenkins がビルドを失敗としてマークできるように、DexGuard をエラー ステータスで終了させる方法はありますか?

現時点では、単にスタック トレースを出力して続行します。

現在、Jenkins の Text-finder プラグインをビルド後のステップとして使用して、DexGuard 例外に一致させています。見つかった場合、ビルドを失敗にダウングレードします。

4

1 に答える 1

1

DexGuard は現在、何らかの理由で Java バイトコードから Dalvik バイトコードに変換できないメソッド (特に入力コードの破損) を無視します。この場合、DexGuard 自体のバグのように見えます。できるだけ早く修正し、エラー ステータスで停止するフラグを追加することを検討します。

(私は ProGuard と DexGuard の主任開発者です)

于 2014-03-15T01:03:36.607 に答える