多亏了 Proguard 的优化功能,我现在可以在我的代码中执行尽可能多的调试日志记录 - 对于生产,我只是让它剥离所有这些不必要的代码。
这很好并且有效(使用最新的 Proguard 版本)。
但是:在我走这条路之前,我final static boolean DEBUG
一直在“守护”我所有的Log.d
/Log.v
呼叫。为了确保我不会忘记为已签名的生产 apk 禁用它,我只是在我的 UI 主要活动中添加了一个易于查看的附加组件,在某个角落放置了一个丑陋的文本“DEBUG IS ON”。
因此,在生成我的最终 apk 时,我所要做的就是安装一次 - 以防我忘记关闭调试模式,这会提醒我。
现在,随着 Proguard 完成删除调试日志调用的工作:我如何在我的应用程序中检测到它并控制状态为“调试已打开”的 UI 元素?任何的想法?
我的第一次尝试是尝试这个:
boolean loggingEnabled = false;
Log.d(TAG, (loggingEnabled = true) ? "Logging test" : "");
我希望 Proguard 也能取消这项任务loggingEnabled=true
——但我低估了 Proguard。它删除了对 的调用Log.d
,但仍然执行分配... :)