4

我即将发布一个应用程序。我应该删除Log语句并e.printStackTrace()catch语句中吗?

4

4 回答 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 回答