【问题标题】:Should logs be disabled before releasing app?是否应该在发布应用程序之前禁用日志?
【发布时间】:2012-07-02 23:33:52
【问题描述】:

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

【问题讨论】:

    标签: android publish


    【解决方案1】:

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

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

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

    PS: 说了这么多,我赶紧补充一下:

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

    这正是上述链接中引用的 Android 文档所说的内容。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          答案是是的。

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

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

          应用签名后,任何人都无法读取调试、错误和信息日志。 希望它有效。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-01-02
            • 1970-01-01
            • 1970-01-01
            • 2021-03-07
            • 1970-01-01
            • 2016-11-26
            • 1970-01-01
            相关资源
            最近更新 更多