我在我的Android应用程序中使用Dexguard来保护 逆向工程。现在我的应用程序非常大,我有 在我所使用的许多类中使用了几个地方System.out.println 将我的服务器URL打印到debugg以便我轻松。现在我正在发布 这个应用程序,这个apk我给其他开发人员,他们 可以在他们的logcat中看到所有System.out.println的东西。怎么样 我该避免这种情况吗?这是一个严重的问题。
答案 0 :(得分:2)
首先,您不应该直接在任何地方使用System.out.println
。使用您自己的包装类进行日志记录。
在dexguard / proguard中,您可以使用assumenosideeffects
删除不需要发布的代码。
因此,对于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(...);
}
答案 1 :(得分:1)
-assumenosideeffects class java.lang.Exception {
public void printStackTrace();
}