1

私が使う

-assumenosideeffects class android.util.Log {
    public static boolean isLoggable(java.lang.String, int);
    public static int v(...);
    public static int i(...);
    public static int w(...);
    public static int d(...);
    public static int e(...);
    public static java.lang.String getStackTraceString(java.lang.Throwable);
}

ただし、逆コンパイルすると、逆コンパイルされた jar ファイルの Log.d 行で使用した唯一のカスタム文字列が表示されます。どうすればそれが可能になりますか?Proguard は Log.d 行を完全に削除しませんか?

4

2 に答える 2

0

明確にするために、ログ呼び出しを削除するために最適化が「有効」になっていることを理解しています。

Log ラッパー クラス(このような)を使用してラップすることができandroid.util.Logます。Proguard がコードを検査する方法に関するこの回答の Eric (別名 Proguard 氏) からのメモのため、このアプローチを使用しました。したがって、これLog.d(tag, string)は、 Log.d(tag, string + value+ String)

または、DexGuard IIRC を使用すると、ログを削除するための明示的な機能がいくつかあります。-- [更新:申し訳ありませんが、明示的な機能ではありません。DexGuard は、あなたが指摘したのと同じ構成を使用します。逆コンパイルされたコードは DexGuard でさらに混乱しているという事実を考えていたと思います。]

于 2015-01-28T16:50:06.910 に答える
0

これは、proguard の最適化が有効になっている場合に関連します。つまり、proguard.config はこれです

proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt
于 2015-01-28T09:36:32.860 に答える