【发布时间】:2012-07-02 23:33:52
【问题描述】:
我即将发布一个应用程序。我应该在catch 语句中删除Log 语句和e.printStackTrace() 吗?
【问题讨论】:
我即将发布一个应用程序。我应该在catch 语句中删除Log 语句和e.printStackTrace() 吗?
【问题讨论】:
日志是必不可少的故障排除资源,即使对于已部署的软件也是如此。
我会限制生产版本的日志记录(甚至可能将其限制为“仅在紧急情况下登录”)。但我不会断然说“不记录”。
这是一个很好的讨论(有一些很好的指导方针):
PS: 说了这么多,我赶紧补充一下:
不,您应该不在生产版本中进行任何“调试”或“信息”日志记录。
这正是上述链接中引用的 Android 文档所说的内容。
【讨论】:
这通常被认为是一种好的做法,因为:
【讨论】:
有时启用日志会产生安全问题。大多数 Android 应用程序不需要担心这一点,原因有几个,但我个人只是养成禁用基于开发人员的功能的习惯,除非您希望用户帮助您在其他设备上调试问题,这在我的经验中并不常见.
【讨论】:
答案是是的。
您可以在 proguard.cfg 文件中添加一些行来隐藏它们。
-keep class * extends android.app.Activity
-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** e(...);
public static *** i(...);
}
应用签名后,任何人都无法读取调试、错误和信息日志。 希望它有效。
【讨论】: