java - Proguard 剩余部分

标签 java android proguard

当我们在以下代码上运行 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 时,不会包含日志记录代码。但这污染了我的代码,所以我对此不太满意。

现在我的问题是: 我怎样才能改善这种行为?留下更少的剩菜,泄漏更少的信息?

最佳答案

您可以通过强制语句分开来阻止编译器使用 Stringbuilder:

Log.d(TAG, "field:");
Log.d(TAG, field);
Log.d(TAG, "enhancedfield:");
Log.d(TAG, enhancedfield);

这当然会对日志结果产生影响(4 行而不是 1 行),并且代码不太可维护。

关于java - Proguard 剩余部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13801494/

相关文章:

java - android将mp3解码为pcm数据的最快方法

android - 查找混淆器生成的混淆堆栈跟踪

Android膨胀的textview忽略宽度

JavaFX 媒体播放器无法在 start 方法内使用 do while 循环;

java - 无法在 Swing Explorer 中加载主类

Java:解析日期时间时出错(JSP、Servlet)

android - 使用 Service Worker 调试移动推送通知

android - 我如何教 ProGuard 摆脱它保留的我不使用的东西?

android - 应用程序在发布时崩溃,而在调试时不会

java - 连接到 WSO2 时 Jersey SSL 异常