我即将发布一个应用程序。我应该删除Log
语句并e.printStackTrace()
在catch
语句中吗?
问问题
251 次
4 回答
4
日志是必不可少的故障排除资源,即使对于已部署的软件也是如此。
我会限制生产版本的日志记录(甚至可能将其限制为“仅在紧急情况下登录”)。但我不会断然说“不记录”。
这是一个很好的讨论(有一些很好的指导方针):
PS:说了这么多,我赶紧补充一下:
不,您不应该在生产版本中记录任何“调试”或“信息”。
这正是上面链接中引用的 Android 文档的内容。
于 2012-07-02T23:39:02.863 回答
2
这通常被认为是一种好的做法,因为:
- 如果您的日志语句包含在调试标志上的 if 语句中,并且您将该标志设置为 false,那么当您编译项目时,这些语句会自动被忽略,从而减少 apk 的大小,尽管幅度不大。
- 由于日志与其他所有应用程序共享,因此在生产应用程序中不要包含这些消息是体贴的,因为它会使其他开发人员的 logcat 在调试时变得混乱。
- 有时,您可能会记录签名、密钥、密码、电子邮件、用户名等敏感数据。禁用日志记录可以防止您的应用意外泄露此类信息。
于 2012-07-02T23:38:34.423 回答
1
有时启用日志会产生安全问题。大多数 Android 应用程序不需要担心这一点,原因有几个,但我个人只是养成禁用基于开发人员的功能的习惯,除非您希望用户帮助您在其他设备上调试问题,这在我的经验中并不常见.
于 2012-07-02T23:36:34.253 回答
0
答案是肯定的。
您可以在 proguard.cfg 文件中添加一些行来隐藏它们。
-keep class * extends android.app.Activity
-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** e(...);
public static *** i(...);
}
应用程序签名后,任何人都无法读取调试、错误和信息日志。希望它有效。
于 2012-07-02T23:57:17.143 回答