在调试期间Dexguard安全性

时间:2014-11-19 06:20:54

标签: android logcat dexguard

我在我的Android应用程序中使用Dexguard来保护         逆向工程。现在我的应用程序非常大,我有         在我所使用的许多类中使用了几个地方System.out.println         将我的服务器URL打印到debugg以便我轻松。现在我正在发布         这个应用程序,这个apk我给其他开发人员,他们         可以在他们的logcat中看到所有System.out.println的东西。怎么样         我该避免这种情况吗?这是一个严重的问题。

2 个答案:

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

请参阅proguard docs

答案 1 :(得分:1)

@vKashyap给出了很好的答案,你可能也想添加它......

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