【发布时间】:2012-03-05 09:01:16
【问题描述】:
我的问题很简单。在将我的应用上传到 Android 市场之前,我应该删除 Log.d/e/i/v 和 e.printStackTrace 指令吗?
【问题讨论】:
-
在这里查看完全相同的副本stackoverflow.com/questions/4958860/…
标签: android logging google-play
我的问题很简单。在将我的应用上传到 Android 市场之前,我应该删除 Log.d/e/i/v 和 e.printStackTrace 指令吗?
【问题讨论】:
标签: android logging google-play
如果可能的话,是的,这是一个很好的应用程序开发实践,但是必须正确处理e.printStack,以防止您的应用程序强制关闭不必要的异常。为此,您可以在所有 catch 块中使用 Log.e(TAG, e.toString());。这将保留有关您的应用程序行为的一些必要信息,您还可以轻松获取有关您的应用程序的任何强制关闭或异常的信息。
【讨论】:
当您混淆您的应用程序时,Log.debug 指令会自动被删除。见链接:
Android Proguard, removing all Log statements and merging packages
【讨论】:
您应该使用OfCource,特别是如果您的应用程序非常依赖性能(例如具有快速帧速率的游戏),否则打印日志会消耗大量性能 正确的做法是使用类似 isLoggable 的标志,如果设置为 false,则不会打印日志。
【讨论】:
这实际上取决于应用程序投放市场后的生命周期。
如果您不能信任您的用户提供详细的错误报告(一般来说,对于与工程相关的应用程序,您可以希望某些用户具有提交详细崩溃报告的敏锐度),那么就没有理由膨胀 Android Log .
另一方面,一些错误是heisenbugs,在您添加日志语句后可能会消失,因此很难找到它们。
这真的是一个品味问题 - 我提供了一个构建时开关,将它们包含在调试构建中,但不包含在发布构建中。我通常会等到应用程序通过 beta 后才能完全禁用调试日志。
【讨论】:
我不知道你是否必须删除它。 如果我将一个项目上传到市场,我会得到同一个应用程序的 2 个版本。
删除它们总是会让应用运行得更快一点(很少)。
【讨论】:
你可以看看here,他们建议你禁用日志记录:
确保您停用日志记录并禁用调试选项 在构建应用程序以进行发布之前。您可以停用 通过删除源文件中对 Log 方法的调用来记录。
但是,您应该保留一些日志记录,例如打印异常堆栈跟踪等,因为如果您删除它们,以后调试可能的崩溃可能会遇到很多麻烦。
【讨论】:
我只是创建自己的 Log 类并为 android.util.Log 方法构建包装器方法,在写入日志之前检查 BuildConfig.DEBUG。
【讨论】:
要删除对 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(...);
}
【讨论】: