Android Dexguard调试期间的安全性

Android Dexguard调试期间的安全性,android,logcat,dexguard,Android,Logcat,Dexguard,我在android应用程序中使用Dexguard来防止 逆向工程。现在在我的应用程序中,这是非常大的,我有 在我所在的许多类中使用了几个位置System.out.println 打印我的服务器URL以方便调试。现在当我发布 这个应用程序,还有我给其他开发者的apk,他们 可以在日志中看到所有System.out.println内容。怎样 我应该避免吗。这是一个严重的问题。首先,您不应该在任何地方直接使用System.out.println。使用您自己的包装器类进行日志记录 在dexguard/p

我在android应用程序中使用Dexguard来防止 逆向工程。现在在我的应用程序中,这是非常大的,我有 在我所在的许多类中使用了几个位置System.out.println 打印我的服务器URL以方便调试。现在当我发布 这个应用程序,还有我给其他开发者的apk,他们 可以在日志中看到所有System.out.println内容。怎样
我应该避免吗。这是一个严重的问题。

首先,您不应该在任何地方直接使用
System.out.println
。使用您自己的包装器类进行日志记录

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

请参见@vKashyap提供的“好答案”,您可能还需要添加此内容

-assumenosideeffects class java.lang.Exception {
    public void printStackTrace();
}

我已经在我的应用程序中写了很多地方了。在发布apk时有没有办法加密或禁用它们?这不是@vKashyap建议的吗?将这些代码段添加到proguard/dexguard配置文件中,将从编译的发行代码中删除它们。你试过了吗?你能告诉我如何加密dexguard中的ResourceRece文件夹吗?它不起作用。我可以很容易地得到我的布局文件,当我反编译我的APK你也可以告诉我如何加密dexguard中的ResourceRece文件夹。它不工作。当我反编译我的apk时,我可以很容易地获得布局文件?这更适合于提出另一个问题和/或联系dexguard支持人员。但是我想你真的关心布局文件吗?