2

我在我的 android 应用程序中使用 Dexguard 来防止逆向工程。现在在我非常大的应用程序中,我在许多类中使用了几个地方 System.out.println,我在其中打印我的服务器 URL 以方便调试。现在,当我发布这个应用程序,以及我提供给其他开发人员的这个 apk 时,他们可以在他们的 logcat 中看到所有 System.out.println 的东西。我应该如何避免这种情况。这有严重的问题。

4

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

查看proguard 文档

于 2014-11-19T06:59:41.197 回答
1

@vKashyap 的好答案,您可能还想添加这个......

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