我在我的 android 应用程序中使用 Dexguard 来防止逆向工程。现在在我非常大的应用程序中,我在许多类中使用了几个地方 System.out.println,我在其中打印我的服务器 URL 以方便调试。现在,当我发布这个应用程序,以及我提供给其他开发人员的这个 apk 时,他们可以在他们的 logcat 中看到所有 System.out.println 的东西。我应该如何避免这种情况。这有严重的问题。
2 回答
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(...);
}
于 2014-11-19T06:59:41.197 回答
1
@vKashyap 的好答案,您可能还想添加这个......
-assumenosideeffects class java.lang.Exception {
public void printStackTrace();
}
于 2014-11-19T12:15:50.937 回答