AndroidアプリケーションでDexguardを使用してリバースエンジニアリングから保護しています.現在、非常に大きなアプリケーションで、多くのクラスでいくつかの場所System.out.printlnを使用しており、サーバーのURLを簡単にデバッグするために印刷しています.今、私がこのアプリケーションをリリースしているとき、そして私が他の開発者に与えているこの apk は、logcat ですべての System.out.println のものを見ることができます。どうすればそれを避けることができますか。これには深刻な問題があります。
質問する
981 次
2 に答える
2
まず第一に、System.out.println
どこでも直接使用するべきではありません。ロギングには独自のラッパー クラスを使用します。
assumenosideeffects
dexguard/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 に答える