Proguard 是否能够混淆记录器消息?

Is proguard capable to obfuscate logger messages?

我使用 proguard 混淆了一个 jar,在研究了生成的 jar 之后,发现它没有混淆我可能想要做的记录器消息。

proguard 怎么做?我使用了所有默认设置的基于 gui 的工具。

原版class

logger.info("value encrypted");

proguard 和反编译后

this.c.info("value encrypted");

简单的答案是 ProGuard 不会这样做。

与此相关,ProGuard 也不会混淆代码中的常量字符串;参见 Does proguard work to obfuscate static string constants?

我能推荐的最好的东西是:

  1. 在您的发布版本中关闭日志记录。
  2. 登录到 Crashlytics,这样最终用户就不会在他们的设备上看到日志消息。
  3. 实施自定义 LogFormatter 以动态混淆日志消息。 (它可以对所有日志消息执行此操作,或者仅对匹配特定模式的日志消息执行此操作。)
  4. 如果您真的想混淆代码中嵌入的日志消息字符串,ProGuard 的替代方法可以做到这一点;请参阅上面的问答 link 了解一些线索。