2

AndroidアプリケーションでDexguardを使用してリバースエンジニアリングから保護しています.現在、非常に大きなアプリケーションで、多くのクラスでいくつかの場所System.out.printlnを使用しており、サーバーのURLを簡単にデバッグするために印刷しています.今、私がこのアプリケーションをリリースしているとき、そして私が他の開発者に与えているこの apk は、logcat ですべての System.out.println のものを見ることができます。どうすればそれを避けることができますか。これには深刻な問題があります。

4

2 に答える 2

2

まず第一に、System.out.printlnどこでも直接使用するべきではありません。ロギングには独自のラッパー クラスを使用します。

assumenosideeffectsdexguard/proguard では、リリースに不要なコードを削除するために使用できます。

したがってSystem.out.print、dexguard ルールに以下を追加できます。

 -assumenosideeffects class java.io.PrintStream {
     public void println(%);
     public void println(**);
 }

ただし、このクラスはロギング以外の目的で使用される可能性があるため、危険です。

あなたにとって最も速い方法はandroid.util.Log、代わりに使用してからSystem.out.print 以下を追加することです

-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(...);
}

プロガードのドキュメントを参照してください

于 2014-11-19T06:59:41.197 に答える
1

@vKashyapによる良い答え、これも追加したいかもしれません...

-assumenosideeffects class java.lang.Exception {
    public void printStackTrace();
}
于 2014-11-19T12:15:50.937 に答える