【发布时间】:2012-12-10 13:01:47
【问题描述】:
当我们对以下代码运行 proguard 时,它应该删除 Logging 语句:
Log.d(TAG, "field= "+field+“ : enhancedfield=”+enhancedfield);
但是…… 编译后你会看到:
Log.d(TAG, new StringBuilder().append("Field= ").append(field)
.append(“ : enhancedfield=”).append(enhancedfield).toString());
现在当我们对此运行 proguard 时,你会得到一些剩菜:
new StringBuilder().append("Field= ").append(field)
.append(“ : enhancedfield=”).append(enhancedfield).toString();
这会将信息泄露给潜在的黑客......
我能做什么:
声明 final static boolean 并且仅在值为 true 时记录。因为该值可以在编译时确定,所以当该值为 false 时将不包含日志记录代码。但这会污染我的代码,所以我对此并不满意。
现在我的问题: 我该如何改善这种行为?少吃剩菜,少泄露信息?
【问题讨论】: