【问题标题】:Any way to remove logging calls without using ProGuard optimization?有什么方法可以在不使用 ProGuard 优化的情况下删除日志记录调用?
【发布时间】:2011-07-20 23:53:24
【问题描述】:

我有一个用于在开发期间进行日志调用的包装类。这使得在任何给定时间打开或关闭所有登录变得容易(加上一些其他漂亮的功能)。之前我在发布时使用了特定的 ProGuard 优化来移除这个类,这也移除了对该类的静态方法的调用(因此没有留下任何日志字符串)。

不幸的是,因为 this,我不得不禁用 ProGuard 的优化功能。虽然我可以轻松关闭日志记录,但我的所有日​​志字符串在生成的 apk 中仍然可见,除非我遗漏了什么,否则 ProGuard 没有其他方法可以删除它们。

在 Eclipse GUI 中构建发布包时,还有其他方法可以删除这些字符串吗? (不是蚂蚁)

【问题讨论】:

    标签: java android proguard


    【解决方案1】:

    我不知道你的字符串文字在哪里等等。但是为了模拟一个 ifdef 调试语句,你会做一些similar to this 如果你可以包装你的调试的所有受影响的内部类/方法/变量,这可能是微不足道的类在这样的声明。

    显然,编译器将它在该块中找到的任何内容删除为或多或少的死代码,或者我已经阅读过,但从未检查过它。

    【讨论】:

    • 字符串实际上是在对日志记录方法的调用中:Logger.print("doing something here"); 所以不幸的是,在Logger 类中禁用日志记录仍然会使字符串分散在整个项目中。 (这是 ProGuard 方法的伟大之处——它实际上也删除了所有调用)
    • @wirbly,所以基本上有很多 if { 添加,也许有人会在没有其他东西的情况下提出,这就是我能想到的没有 ProGuard
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多