在上传到市场之前,Android删除了Log.d和e.printStackTrace说明

时间:2012-03-05 09:01:17

标签: android logging google-play

我的问题很简单。在将我的应用程序上传到Android市场之前,我应该删除Log.d / e / i / v和e.printStackTrace说明吗?

8 个答案:

答案 0 :(得分:4)

如果可能的话,是一个很好的应用程序开发实践,但是e.printStack的正确处理是必要的,以防止你的应用程序强制关闭不必要的异常。为此,您可以在所有catch块中使用Log.e(TAG, e.toString());。这将保留有关您的应用程序行为的一些必要信息,您还可以轻松获取有关您的应用程序的任何强制关闭或异常的信息。

答案 1 :(得分:2)

当您对应用程序进行模糊处理时,会自动删除Log.debug指令。见链接:

Android Proguard, removing all Log statements and merging packages

答案 2 :(得分:0)

它确实取决于应用程序上市后的生命周期。

如果您无法信任您的用户提供详细的错误报告(一般来说,与工程相关的应用程序,您可以希望有些用户会有敏锐的提交详细的崩溃报告),那么就没有理由臃肿Android日志。

另一方面,一些错误是 heisenbugs ,并且在添加日志记录语句后可能会消失,这使得它们很难找到。

这真的是一个品味问题 - 我提供了一个构建时间开关,它包含在调试版本中,但不包括在发布版本中。我通常会等到应用程序超过测试版以完全禁用调试日志。

答案 3 :(得分:0)

我不知道你是否必须删除它。 如果我将一个项目上传到市场,我得到了同一个应用程序的2个版本。

  1. with println and logs
  2. 没有println和日志
  3. 删除它们将始终使应用程序更快(非常少)。

答案 4 :(得分:0)

OfCource你应该,特别是如果你的应用程序很大程度上依赖于性能(例如具有快速帧速率的游戏),否则日志的打印会消耗很多性能 执行此操作的正确方法是使用isLoggable之类的标志,如果设置为false则不会打印日志。

答案 5 :(得分:0)

您可以查看here,建议您停用日志记录:

  

确保停用日志记录并禁用调试选项   在构建应用程序以进行发布之前。你可以停用   通过删除对源文件中的Log方法的调用来进行日志记录。

但是,您应该保留一些日志记录,例如在异常等情况下打印堆栈跟踪,因为如果删除它们,可能会在以后调试可能发生的崩溃时遇到很多麻烦。

答案 6 :(得分:0)

我只是创建自己的Log类并为android.util.Log方法构建包装器方法,在编写日志之前检查BuildConfig.DEBUG

答案 7 :(得分:0)

要删除对Log类的调用,请将以下内容添加到proguard-rules文件中:

-assumenosideeffects class android.util.Log {
    public static boolean isLoggable(java.lang.String, int);
    public static int v(...);
    public static int i(...);
    public static int w(...);
    public static int d(...);
    public static int e(...);
}