【发布时间】:2011-01-27 14:57:53
【问题描述】:
根据 Google 的说法,在将我的 Android 应用发布到 Google Play 之前,我必须“停用对源代码中 Log 方法的任何调用”。摘自publication checklist的第3节:
确保在构建应用程序以供发布之前停用日志记录并禁用调试选项。您可以通过删除源文件中对 Log 方法的调用来停用日志记录。
我的开源项目很大,每次发布都手动做很痛苦。此外,删除 Log 行可能会很棘手,例如:
if(condition)
Log.d(LOG_TAG, "Something");
data.load();
data.show();
如果我注释 Log 行,则条件适用于下一行,并且可能不会调用 load()。这种情况是否足够少,以至于我可以决定它不应该存在?
那么,有没有更好的源代码级别的方法来做到这一点?或者也许一些巧妙的 ProGuard 语法可以有效但安全地删除所有日志行?
【问题讨论】:
-
+1 因为我不记得这在出版清单中。
-
注释掉非阻塞行,我使用“;//”而不是“//”。
-
如果您需要能够撤消此操作,您可能需要改用
sed 's_^\(\s*Log\.\)_;//'`date|tr -s \ -`'\1_g'。 -
Dimitar 添加的链接失效了。我找到了这个 source.android.com/source/code-style.html#log-sparingly.
-
@mboy:现在可能主要是为了性能,但在旧的 Android 版本上它也有安全优势。
标签: android logging proguard android-log