应该在发布应用程序之前禁用日志?

时间:2012-07-02 23:33:52

标签: android publish

我即将发布一款应用。我应该在Log声明中删除e.printStackTrace()语句和catch吗?

4 个答案:

答案 0 :(得分:4)

日志是必不可少的故障排除资源,即使对于已部署的软件也是如此。

我会限制生产版本的日志记录(甚至可能将其限制为“仅登录紧急情况”)。但我断然说“没有记录”。

这是一个很好的讨论(有一些很好的指导方针):

PS: 话虽如此,我赶紧补充道:

不,您应该在生产版本中进行任何“调试”或“信息”记录。

以上链接中引用的Android文档也正是如此。

答案 1 :(得分:2)

这通常被认为是一种很好的做法,因为:

  • 如果您的日志语句包含在调试标志上的if语句中,并且您将该标志设置为false,那么在编译项目时,这些语句会自动被忽略,从而减小了apk的大小,尽管不是很多。
  • 由于日志与其他所有应用程序共享,因此在生产应用程序中没有这些消息是值得考虑的,因为它会在调试时混乱其他开发人员的logcat。
  • 有时,您可能会记录敏感数据,如签名,密钥,密码,电子邮件,用户名等。禁用日志记录可能会阻止您的应用意外泄露此类信息。

答案 2 :(得分:1)

有时启用日志会产生安全问题。由于多种原因,大多数Android应用程序都不需要担心这个问题,但我个人只是习惯于禁用基于开发人员的功能,除非您希望用户帮助您调试其他设备上的问题,这在我的经验中并不常见

答案 3 :(得分:0)

答案是

您可以隐藏它们在proguard.cfg文件中添加一些行。

-keep class * extends android.app.Activity
-assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** e(...);
    public static *** i(...);
}

应用程序签名后,没有人能够读取调试,错误和信息日志。 希望它有效。